sedを使用してCSVファイルの各行から2番目のカンマを削除する方法は?

sedを使用してCSVファイルの各行から2番目のカンマを削除する方法は?

ディレクトリに多くのcsvファイルがあり、各行から2番目のカンマを削除したいと思います。例:

入力する:

53,900,1001,-45.4247,9.87187,541.65
75,900,0102,37.0896,4.24087,558.35
75,900,1101,37.3096,4.25814,561.65
46,901,0003,-51.3833,-20.2645,578.35
3,901,0003,-57.302,-23.0063,578.35

希望の出力:

53,9001001,-45.4247,9.87187,541.65
75,9000102,37.0896,4.24087,558.35
75,9001101,37.3096,4.25814,561.65
46,9010003,-51.3833,-20.2645,578.35
3,9010003,-57.302,-23.0063,578.35

sedを使用してこれを達成できますか?よろしくお願いします!

答え1

この方法:

sed 's/,//2' file.csv

このオプションは文書化されています。ここコマンドとしてフラグを使用できますs

数字

正規表現の数値項目のみを置き換えます。

答え2

awk -F "," 'BEGIN{OFS=","}{$2=$2$3;$3="";gsub(/,,/,",",$0);print}' file.txt

出力

53,9001001,-45.4247,9.87187,541.65
75,9000102,37.0896,4.24087,558.35
75,9001101,37.3096,4.25814,561.65
46,9010003,-51.3833,-20.2645,578.35
3,9010003,-57.302,-23.0063,578.35

答え3

GNU awk camのgensub機能は、次の状況でも利用できます。

$ gawk '{$0=gensub(/,/,"",2)}1' file

関連情報