Добавляет n-ю строку из файла x в конец файла y
Меня попросили написать команду, которая добавляет n-ю строку (MYN) из файла (x) в другой файл (y). Вот что я сделал до сих пор:
MYN=4
hey=$(awk 'NR==$MYN' x)
echo "$hey" >> y
Но почему это не работает?
2 ответа
Решение
Если ваша цель - передать переменную 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