bash цикл - вывод в соответствии со строкой из файла - PullRequest
0 голосов
/ 01 апреля 2020

Как вызвать выходной файл как строку в 4-м столбце выходных данных (или в соответствии с 4-м столбцом i-й строки входных данных)?

Я пытался:

for i in {1..321}; do
awk '(FNR==i) {outfile = $4 print $0 >> outfile}' RV1_phase;
done

или

for i in {1..321}; do
awk '(FNR==i) {outfile = $4; print $0}' RV1_phase > "$outfile";
done

входной файл:

1 2 2 a
4 5 6 f
4 4 5 f
....
....

желаемый ввод i = 1 имя: a

1 2 2 a

Цель: у меня есть данные, которые я вывел на график в gnuplot и Я хотел бы построить набор цифр, названных в честь строки, чтобы узнать, какая точка взята из какого файла. Точка будет цветной. Мне нужно получить файлы для построения графиков в gnuplot, поэтому я хотел бы создать их, используя цикл из моего вопроса.

1 Ответ

2 голосов
/ 01 апреля 2020

Просто

for i in {1..321}; do
awk '(FNR==i) {print $0 >> $4}' RV1_phase;
done

Проблема с вашей первой попыткой заключалась в том, что вы не использовали ; для отделения назначения outfile от команды print. Однако отдельная переменная не нужна.

Вам не нужно bash l oop, либо:

awk '1 <= FNR && FNR <= 321 {print $0 >> $4}' RV1_phase;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...