Как вставить последующие строки из входного файла в конец каждой строки другого файла?

< inputfile egrep ';' | cut -f 2 -d ';'

-Эта команда и вы получите это!

0
18.05.2021, 20:20
2 ответа

Предполагая, что файлы должны быть "объединены" построчно, используйте paste.

Утилита pasteберет ввод из одного или нескольких файлов и создает вывод, состоящий из файлов, «вставленных рядом». Утилита pasteсоздает столбцы файлов, перечисленных в ее командной строке.

paste first_file second_file

Чтобы использовать пробел в качестве разделителя между файлами (вместо символа табуляции по умолчанию ),используйте pasteс его опцией -d:

paste -d ' ' first_file second_file

См. также руководство для pasteвашей системы.

В некотором смысле, pasteделает противоположное cut, которое извлекает поля/столбцы.

5
28.07.2021, 11:31

Использованиеawk:

awk 'NR==FNR { arr[NR]=$0; next}{ printf "%s %s\n", arr[FNR], $0 }' first_file second_file

NR==FNR{ arr[NR]=$0Это создаст массив arr, проиндексированный по строкам (номера записей )только для первого файла. Это связано с тем, что FNR устанавливается в ноль, когда awk начинает читать второй файл, тогда как NR — это общее количество записей, прочитанных до сих пор из всех файлов, т. е. NR не устанавливается в ноль, когда новый файл запускается для чтения.

Оператор nextуказывает awk прекратить обработку текущей записи, (прочитать строку )и перейти к следующей записи. Это означает, что дальнейшие команды не будут выполняться для текущей строки. Поэтому после создания массива arrоператор printfне выполняется для первого файла.

Далее printfпечатает arrи все записи из второго файла.

Я ничего не сделал, кроме слегка измененной команды, взятой из этого ответа .

1
28.07.2021, 11:31

Теги

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