我有一个包含重复字段的文件。
样本文件:
ID |Date|id |date|name|...(up to 71 fields)
1313335|xxx |1313335|xx |Zuan|
1677783|xxx |1677783|xx |Zen|
11106A7|xxx |Zack |
如果第一列与第三列匹配,则删除第三列和第四列。
输出:
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
。