区切りファイルの最初のフィールドに基づいて各行の末尾のコンマを切り捨てます。

区切りファイルの最初のフィールドに基づいて各行の末尾のコンマを切り捨てます。

Record_type(最初のフィールド)に基づいて末尾のコンマを削除する必要があります。入力ファイルには50の区切り文字があり、レコードの種類に応じて区切り文字を減らす必要があります。最初のフィールドが400の場合は最後の10個の区切り文字が削除され、300の場合は5つの区切り文字が削除され、210の場合は2つのカンマが削除されます。 400、300、210のパターンが繰り返され、順序は同じままでなければなりません。

たとえば、

400,"100.00",,,,"31",,,,"510","410","0102","023",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
300,"110","1",,"2016-04-15",,,"52706","TESTFR1","100.00","1.00",,,"N",,,,,,,,,
210,"6876262",,"23 Rue du Roule",,,"PARIS","DF","75001","FR",,,,,,,,,,,,,,,,,,

出力が必要です。

400,"100.00",,,,"31",,,,"510","410","0102","023",,,,,,,,,,,,,,,,,,,,
300,"110","1",,"2016-04-15",,,"52706","TESTFR1","100.00","1.00",,,"N",,,,
210,"6876262",,"23 Rue du Roule",,,"PARIS","DF","75001","FR",,,,,,,,,,,,,,,,

awkとsedを試しましたが、ファイル全体が切り捨てられました。

ベストアンサー1

sedはあなたの要件を満たすことができます。これにより、目的の文字列の先頭に一致し、最後の任意の数のカンマが削除されます。

sed -e '/^400/ s/,\{10\}$//' -e '/^300/ s/,\{5\}$//' -e '/^210/ s/,\{2\}$//' 

おすすめ記事