Linuxを使用してCSVから各行の最後のコンマを削除する方法

Linuxを使用してCSVから各行の最後のコンマを削除する方法

各行の最後のコンマを削除する必要があります。

次のcsvファイルがあります。

98,N,N,N,N,S,
99,N,N,N,N,S,
101,Y,Y,Y,Y,S,

次のスクリプトがありますが、動作しません。

for fname in conv2015_10_LogicalComponent_CosProfile.csv
do
   sed 's/.$//' $fname > tmp.tmp
   mv tmp.tmp $fname
done

ベストアンサー1

これはうまくいきます。

for fname in conv2015_10_LogicalComponent_CosProfile.csv
  do
    cat $fname | sed 's/.$//' > tmp.tmp
    mv tmp.tmp $fname
  done

別のオプションは、GNU Sedオプションを使用する場合です-i

それからこれを行います。

sed -i 's/.$//' filename

また、「、」の代わりに「。」が使用される理由を明確にします。これは正規表現であり、ほぼすべての文字と一致するため、「;」がある場合はその文字も置き換えられます。より正確にすることも、.$に変更することもできます,$

編集する:

実際に最後にスペースがあると言われたことを確認しました。したがって、このコードは空白があっても機能します。 Solarisで検証済みです。

cat filename | sed 's/,[[:blank:]]*$//g' > tmp.tmp
mv tmp.tmp desired_filename

おすすめ記事