awkで複数行(単位)を1行にするTips [Tips]
過去にpasteコマンドを使って複数行(単位)を1行にするTipsを書きました。
今回はawkを使って書きたいと思います。
sample1.txtが以下のように2行単位にデータが繰り返されています。
%cat sample1.txt
11111
aaaaa
22222
bbbbb
33333
ccccc
この2行を1行に,(カンマ)区切りにするには、以下のようにします。
awk '{if(NR%2)ORS=",";else ORS="\n";print}' sample1.txt
11111,aaaaa
22222,bbbbb
33333,ccccc
Tab区切りにしたいときは「,」を「\t」にします。
awk '{if(NR%2)ORS="\t";else ORS="\n";print}' sample1.txt
同じようにsample2.txtが以下のように3行単位にデータが繰り返されています。
cat sample2.txt
11111
aaaaa
#####
22222
bbbbb
$$$$$
33333
ccccc
+++++
この3行を1行に,(カンマ)区切りにするには、以下のようにします。
awk '{if(NR%3)ORS=",";else ORS="\n";print}' sample2.txt
11111,aaaaa,#####
22222,bbbbb,$$$$$
33333,ccccc,+++++
2行と3行の違いは、NR%2とNR%3です。
次回もお楽しみに!!
今回はawkを使って書きたいと思います。
sample1.txtが以下のように2行単位にデータが繰り返されています。
%cat sample1.txt
11111
aaaaa
22222
bbbbb
33333
ccccc
この2行を1行に,(カンマ)区切りにするには、以下のようにします。
awk '{if(NR%2)ORS=",";else ORS="\n";print}' sample1.txt
11111,aaaaa
22222,bbbbb
33333,ccccc
Tab区切りにしたいときは「,」を「\t」にします。
awk '{if(NR%2)ORS="\t";else ORS="\n";print}' sample1.txt
同じようにsample2.txtが以下のように3行単位にデータが繰り返されています。
cat sample2.txt
11111
aaaaa
#####
22222
bbbbb
$$$$$
33333
ccccc
+++++
この3行を1行に,(カンマ)区切りにするには、以下のようにします。
awk '{if(NR%3)ORS=",";else ORS="\n";print}' sample2.txt
11111,aaaaa,#####
22222,bbbbb,$$$$$
33333,ccccc,+++++
2行と3行の違いは、NR%2とNR%3です。
次回もお楽しみに!!
コメント 0