добавляет n-ю строку из файла x в конец файла y

добавляет n-ю строку из файла x в конец файла y

Меня попросили написать команду, которая добавляет n-ную строку ( MYN) из файла ( x) в другой файл ( y). Вот что я сделал на данный момент:

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

Но почему это не работает?

решение1

Если ваша цель — передать переменную для awkиспользования ее в скрипте, вы можете использовать awkопцию -v:

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

решение2

Я вижу вашу проблему, вы используете одинарные кавычки. Они не позволяют переменной 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

Связанный контент