Просто используйте 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, - -