Просто используйте cat
(если вы любите кошек ;-)) и paste
:
cat file.in | paste -d, - - > file.out
Объяснение: paste
читает из ряда файлов и вставляет вместе соответствующие строки (строка 1 из первого файла со строкой 1 из второго файла и т. Д.):
paste file1 file2 ...
Вместо имени файла мы можем использовать -
(тире). paste
берет первую строку из file1 (который является stdin). Затем он хочет прочитать первую строку из файла file2 (который также является stdin). Однако, так как первая строка stdin уже была прочитана и обработана, то, что теперь ожидает во входном потоке, является второй строкой stdin, которая paste
успешно приклеивается к первой. -d
Опция устанавливает разделитель быть запятая , а не вкладка.
Или сделать
cat file.in | sed "N;s/\n/,/" > file.out
PS Да, выше можно упростить до
< file.in sed "N;s/\n/,/" > file.out
или
< file.in paste -d, - - > file.out
который имеет преимущество не использовать cat
.
Тем не менее, я не использовал эту идиому нарочно , для наглядности - это менее многословным , и я , как cat
(Кошкам NICE). Поэтому, пожалуйста, не редактируйте.
В качестве альтернативы, если вы предпочитаете вставлять кошки (команда вставки объединяет файлы по горизонтали, а кошка объединяет их по вертикали), вы можете использовать:
paste file.in | paste -d, - -