n行毎に連結する

教えてもらったのでメモ。

% seq 9 | perl -pe 's/\n/,/ if $.%3'
1,2,3
4,5,6
7,8,9
% seq 9 | perl -lpe '$\=$.%3?",":"\n"'

改行を含んだ置換をする場合は、sedのかわりにperlを使うことを考えるとよい。

ruby

% seq 9 | ruby -pe 'gsub(/\n/,",") if $.%3!=0'

% seq 9 | ruby -lpe '$\=$.%3==0?"\n":","'

awk

% seq 9 | awk '{ORS=NR%3?",":"\n";print}'

sed

seq 9 | sed 'N;N;s/\n/,/g'

sedでリベンジ。数値指定じゃないけど…