agrega la enésima línea del archivo x al final del archivo y

agrega la enésima línea del archivo x al final del archivo y

Me pidieron que escribiera un comando que agregue la enésima línea ( MYN) de un archivo ( x) a otro archivo ( y). Esto es lo que he hecho hasta ahora:

MYN=4
hey=$(awk 'NR==$MYN' x)
echo "$hey" >> y 

¿Pero por qué esto no funciona?

Respuesta1

Si su objetivo es pasar una variable para awkusarla dentro del script, puede usar awkla -vopción:

hey=$(awk -v MYN=$MYN 'NR==MYN' x)

Respuesta2

Veo tu problema, estás usando comillas simples. No permitirán que la variable Bash $MYNse expanda. Puedes complicar las cosas indicando awkuna nueva variable o, como es tan simple, puedes simplemente cambiar a comillas dobles:

awk "NR==$MYN" x

Tendríausadosedpero no veo ningún problema obvio con tu lógica

MYN=4
sed "${MYN}q;d" x >> y

Parece funcionar como se esperaba:

$ for i in $(seq 1 10); do echo $i >> x; done
$ sed "${MYN}q;d" x
4

información relacionada