以下のようにlinuxフォルダにファイルがあります。ファイルには、値がカンマで区切られた4つの列が必要です。ただし、一部の行には3つの列しかありません。列が3つある場合は、行の先頭にスペースを追加したいと思います。
入力する:
col1,col2,col3,col4
a1,a2,a3,a4
b1,b2,b3,b4
c2,c3,c4
d1,d2,d3,d4
出力:
col1,col2,col3,col4
a1,a2,a3,a4
b1,b2,b3,b4
,c2,c3,c4
d1,d2,d3,d4
事前にありがとう
ベストアンサー1
awk exを使用できます。
awk -F, 'NF==3 {$0=","$0} 1' file
適切な最新バージョンのGNU awkがある場合は、次のようにファイルにそのバージョンを適用できます。
gawk -i inplace -F, 'NF==3 {$0=","$0} 1' file
そうしないと、他のツールを使用する方が簡単になる可能性がsed
ありますperl
。
perl -i -F, -pe '$_ = "," . $_ if $#F == 2' file
おそらく
sed -i'.bak' -e 's/,/,/3;t' -e 's/^/,/' file
(3番目のコンマを置き換えます。失敗した場合は、行の先頭のコンマを置き換えます)。