パイプ|
でファイルを分離しましたが、列6に文字I
print0758000
が列7に含まれている場合と列6に文字A
print0800000
が列7に含まれている場合に見つかりませんどうやってするの!!!
例:
元のファイル
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
あなたは次のようなawkでそれを行うことができます
awk -F\| 'BEGIN {OFS=FS} $6 == "A" {$7 = "0800000"} $6 == "I" {$7 = "0758000"}; 1' file1.txt
これには、|
に基づいてawk
分割フィールドがあり、行を書き戻すときに出力フィールドセパレータも|
に設定します。次に、6番目のフィールド$6
がA
の場合、7番目のフィールドを特定の値に置き換え、Iの場合は別の値に置き換えます。次に、最後に行を出力します。なんでも作った。
sed
の場合:
sed -e 's/\(I|\)[^|]*$/\10758000/;s/\(A|\)[^|]*$/\10800000/' file1.txt
重要なのは、s
I|
またはA|
(つまり最後の列)の後に続くすべてのものを希望の番号に置き換えることです。
結果:
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
SLPJP_Box 11/03/2017 22:00:07 ----- RU 13232789/1
SLPJP_PRD_SOB_MAIN 09/07/2017 22:00:30 09/07/2017 22:00:57 OI 11769239/1 0
SLPJP_PRD_SOD_BOX 11/03/2017 22:00:18 ----- RU 13232789/1
SLPJP_PRD_SOD_001 11/03/2017 22:00:34 11/03/2017 23:10:25 SU 13232789/1 0
SLPJP_PRD_SOD_002 11/03/2017 23:10:26 ----- RU 13232789/1
SLPJP_PRD_SOD_003 ----- 11/02/2017 22:18:34 AC 13232789/0
SLPJP_PRD_SOD_004 ----- 11/02/2017 22:19:55 AC 13232789/0
すべての列を印刷したいのですが、すべての列SU、OI、AC列を削除し、すべての空白のスペースを任意のセパレーターに削除します