繰り返しフィールドがあるファイルがあります。
サンプルファイル:
ID |Date|id |date|name|...(up to 71 fields)
1313335|xxx |1313335|xx |Zuan|
1677783|xxx |1677783|xx |Zen|
11106A7|xxx |Zack |
最初の列が3番目の列と一致する場合は、3番目と4番目の列を削除します。
出力:
ID |Date|name|...(up to 71 fields)
1313335|xxx |Zuan|
1677783|xxx |Zen |
11106A7|xxx |Zack|
あなたの助けが必要です!
ベストアンサー1
列 1 と列 3 のスペースが同じであると仮定すると、次のようになります。
awk -F '|' -v OFS='|' '$1==$3 { for(i = 3; i < NF-1; i++) $i = $(i+2); NF -= 2 } { print }' sample.txt
説明する:
-F '|' -v OFS='|'
入力および出力フィールドの区切り
$1 == $3
設定:3列から開始1列と3列が等しい
for(i = 3; i < NF-1; i++) $i = $(i+2);
値を前の2列に移動列
NF -= 2
数を減らす
{ print }
無条件行印刷
スクリプトは、ヘッダーの列3と4がID
同じではないため、削除しないことに注意してくださいid
。