ファイルの特定の列で指定された条件の値を変更する方法

ファイルの特定の列で指定された条件の値を変更する方法

パイプで区切られたファイルがありますが、|6列に7列の文字が含まれていて、6列に7列の文字が含まれていればI印刷したいのですが、どうすればいいかわかりません!0758000A0800000

例:

オリジナルファイル

cat file1.txt
Z89|EEE333333|100001|JANMC84|19990101|I|1800040
Z89|EEE444444|200001|JANMC84|19990101|I|1800040
Z89|EEE222222|300001|JANMC84|19990101|A|1800040
Z89|EEE555555|700001|JANMC84|19990101|A|1800040

結果は次のとおりです。

Z89|EEE333333|100001|JANMC84|19990101|I|0758000
Z89|EEE444444|200001|JANMC84|19990101|I|0758000
Z89|EEE222222|300001|JANMC84|19990101|A|0800000
Z89|EEE555555|700001|JANMC84|19990101|A|0800000

ベストアンサー1

awkを使用してこれを行うことができます。

awk -F\| 'BEGIN {OFS=FS} $6 == "A" {$7 = "0800000"} $6 == "I" {$7 = "0758000"}; 1' file1.txt

これは、フィールドを分割してawk行を書き換えるときに|出力フィールド区切り文字を設定することに基づいています。|次に、6番目のフィールドの場合は$67A番目のフィールドを特定の値に置き換え、Iの場合は別の値に置き換えます。その後、変更(もし変更した場合)を含む行が最後に印刷されます。

おすすめ記事