acrescenta n-ésima linha do arquivo x no final do arquivo y

0

Fui solicitado a escrever um comando que acrescenta a n-ésima linha ( MYN ) de um arquivo ( x ) a outro arquivo ( y ). Aqui está o que eu fiz até agora:

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

Mas por que isso não funciona?

    
por Martin Yeboah 29.06.2015 / 15:04

2 respostas

2

Se sua meta é passar uma variável para awk para usá-la no script, use awk com a opção -v :

hey=$(awk -v MYN=$MYN 'NR==MYN' x)
    
por kos 29.06.2015 / 15:21
2

Eu vejo seu problema, você está usando aspas simples. Eles não permitirão que a variável de Bash $MYN se expanda. Você pode complicar as coisas dizendo awk uma nova variável, ou porque é tão simples, você pode simplesmente mudar para aspas duplas:

awk "NR==$MYN" x

Eu teria usado sed , mas não vejo problemas óbvios com sua lógica

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

Parece funcionar como esperado:

$ for i in $(seq 1 10); do echo $i >> x; done
$ sed "${MYN}q;d" x
4
    
por Oli 29.06.2015 / 15:19