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

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

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

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

0
задан 29 June 2015 в 16:14

2 ответа

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

hey=$(awk -v MYN=$MYN 'NR==MYN' x)
2
ответ дан 4 October 2019 в 01:51

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

Другие вопросы по тегам:

Похожие вопросы: