anexa a enésima linha do arquivo x no final do arquivo y

anexa a enésima linha do arquivo x no final do arquivo y

Pediram-me para escrever um comando que anexe a enésima linha ( MYN) de um arquivo ( x) a outro arquivo ( y). Aqui está o que fiz até agora:

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

Mas por que isso não funciona?

Responder1

Se seu objetivo é passar uma variável para awkpoder utilizá-la dentro do script, você pode usar awkcom a -vopção:

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

Responder2

Entendo seu problema, você está usando aspas simples. Eles não permitirão que a variável Bash $MYNse expanda. Você pode complicar as coisas informando awkuma nova variável, ou porque é tão simples, você pode simplesmente mudar para aspas duplas:

awk "NR==$MYN" x

Eu teriausadosedmas não consigo ver nenhum problema óbvio 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

informação relacionada