csv行の特定のポイントに文字を挿入するにはどうすればよいですか?たとえば、私が次のようなものを持っていた場合:
1,2,3,4,5,6,7
,,,,,
5(5番目のフィールド)がある場所に挿入するにはどうすればよいですか?
1,2,3,4,,,,,,5,6,7
Javaでこれを行う方法のリンクを見つけましたが、残念ながら、bashでこれを行う方法を見つけることができませんでした。どんな助けでも大歓迎です、ありがとう!
awk
特定のフィールドを変更するために使用できます。
awk -F"," '{OFS=","; a=$5; $5=",,,,,",a; print $0}' file
アイデアは、フィールド5を目的の値で更新してから、行全体を印刷することです。
echo "1,2,3,4,5,6,7" | awk -F"," '{a=$5; $5=",,,,,"a; OFS=","; print}'
印刷します:
1,2,3,4,,,,,,5,6,7
awk -F, 'BEGIN{OFS=","}{$5=",,,,,"$5;print}' your_file
以下でテスト済み:
> echo "1,2,3,4,5,6" | awk -F, 'BEGIN{OFS=","}{$5=",,,,,"$5;print}'
1,2,3,4,,,,,,5,6
>
または、perlを使用してそれを行うことができます:
> echo "1,2,3,4,5,6" | perl -F, -lane '$F[4]=~s/^/,,,,,/g;print join(",",@F)'
1,2,3,4,,,,,,5,6
>