Меня попросили записать команду, которая добавляет энную строку (MYN
) из файла (x
) в другой файл (y
). Вот то, что я сделал до сих пор:
MYN=4
hey=$(awk 'NR==$MYN' x)
echo "$hey" >> y
Но почему это не работает?
Если Ваша цель состоит в том, чтобы передать переменную awk
для использования ее в рамках сценария, можно использовать awk
с -v
опция:
hey=$(awk -v MYN=$MYN 'NR==MYN' x)
Я вижу вашу проблему, вы используете одинарные кавычки. Они не позволят переменной Bash $MYN
расширяться. Вы можете усложнить ситуацию, сказав awk
новую переменную, или потому что это так просто, вы можете просто переключиться на двойные кавычки:
awk "NR==$MYN" x
Я бы использовал sed
] но я не вижу каких-либо очевидных проблем с вашей логикой
MYN=4
sed "${MYN}q;d" x >> y
Кажется, что работает как ожидалось:
$ for i in $(seq 1 10); do echo $i >> x; done
$ sed "${MYN}q;d" x
4