単一のヘッダーと多数のレコードを含むフラットファイル(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のすべての先行ゼロが引用符でのみ置き換えられます。