Unixフラットファイル(awk、sed)で選択した二重引用符フィールドから先行ゼロを削除します。

Unixフラットファイル(awk、sed)で選択した二重引用符フィールドから先行ゼロを削除します。

単一のヘッダーと多数のレコードを含むフラットファイル(txt / csv)があります。 awk / sed / unixツールを使用して、レコードのフィールド3と5からのみ先行ゼロ(1つ以上の先行ゼロかもしれません)を削除したいと思います。いくつかの解決策を見てきましたが、ほとんどは二重引用符の値を考慮していないようです。例:

"ACCOUNT","REAL","022000046977525","REAL","00000220000488","ONLINE",......

awk、sed、printf、正規表現などを試してみました。すでに投稿された内容を私が逃したのでしょうか?アイデア?ありがとうございます。

希望の出力:

"ACCOUNT","REAL","22000046977525","REAL","220000488","ONLINE",......

ベストアンサー1

使用awk:

awk -F, '{OFS=","; sub(/"0+/, "\"", $3); sub(/"0+/, "\"", $5)}1'

ヘッダーに実際に前にゼロがない限り問題はありませんが、必要に応じて次のことができます。

awk -F, 'NR > 1{OFS=","; sub(/^"0+/, "\"", $3); sub(/^"0+/, "\"", $5)}1'

これにより、"フィールド3と5のすべての先行ゼロが引用符でのみ置き換えられます。

おすすめ記事