我有这个输入文件。。我需要删除第13列中重复的行,但我对包含"的数据有问题-">为什么不删除
输入
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RS|201908|RS|129220198
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|162230484
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|192863252
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RX|201907|RB|192863252
13220610|4|615906412|5|05502216092 |411|8|798|798|RB|201811|RB|13220610-4
13219722|9|644118078|5|05502217789 |310|8|730|730|RS|201811|RS|13219722-9
13219789|K|36062376|5|05202316950 |315|4|493|493|RS|201811|RS|13219789-K
13220015|7|70321801|5|05502623275 |310|1|359|359|RB|201811|RB|13220015-7
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RX|201908|RX|48510787
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RS|201908|RS|129220198
13220610|4|615906412|5|05502216092 |411|8|798|798|RB|201811|RB|13220610-4
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|138290077
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|15568996K
13219789|K|36062376|5|05202316950 |310|4|493|493|RS|201811|RS|13219789-K
我需要删除重复第13列的列,但我的代码只删除了第13列中没有"0"的数据-">
seen[$13]++; a[++count]=$0; key[count]=$13} END {for (i=1;i<=count;i++) if (seen[key[i]] == 1){print a[i] >> (File".ok")}else{
print a[i] >> (File".nok")}
所需输出
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|162230484
13219722|9|644118078|5|05502217789 |310|8|730|730|RS|201811|RS|13219722-9
13220015|7|70321801|5|05502623275 |310|1|359|359|RB|201811|RB|13220015-7
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RX|201908|RX|48510787
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RS|201908|RS|129220198
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|138290077
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|15568996K
感谢您的帮助
如果您的示例输入是准确的,那么列13中的某些列包含尾部空白。如果你想把它们视为相同的价值,你可以修剪它。
例如,在使用第13列之前,您可以执行以下操作:
gsub(/^[[:space:]]+|[[:space:]]$/,"",$13)
双通道方法将允许您消除所有具有重复字段13的记录,例如
awk -F'|' 'FNR==NR{seen[$13]++; next} seen[$13]>1 {next}1' file file
如@jhnc所示,字段13中有尾部空格,为了匹配重复的非空白,您需要修剪尾部空白,例如
awk -F'|' '{sub(/[ ]+$/,"",$13)} FNR==NR{seen[$13]++; next} seen[$13]>1 {next}1' file file
输出
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|162230484
13219722|9|644118078|5|05502217789 |310|8|730|730|RS|201811|RS|13219722-9
13220015|7|70321801|5|05502623275 |310|1|359|359|RB|201811|RB|13220015-7
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RX|201908|RX|48510787
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|138290077
0|0|NULL|NULL|NULL|NULL|NULL|NULL|NULL|RB|201908|RB|15568996K
(注意:您在输出129220198
中显示的字段13在输入中重复(