< inputfile egrep ';' | cut -f 2 -d ';'
-Эта команда и вы получите это!
Предполагая, что файлы должны быть "объединены" построчно, используйте paste
.
Утилита paste
берет ввод из одного или нескольких файлов и создает вывод, состоящий из файлов, «вставленных рядом». Утилита paste
создает столбцы файлов, перечисленных в ее командной строке.
paste first_file second_file
Чтобы использовать пробел в качестве разделителя между файлами (вместо символа табуляции по умолчанию ),используйте paste
с его опцией -d
:
paste -d ' ' first_file second_file
См. также руководство для paste
вашей системы.
В некотором смысле, paste
делает противоположное cut
, которое извлекает поля/столбцы.
Использование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
и все записи из второго файла.
Я ничего не сделал, кроме слегка измененной команды, взятой из этого ответа .