删除重复项,但删除列时出现问题"-"



我有这个输入文件。。我需要删除第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在输入中重复(

相关内容

  • 没有找到相关文章

最新更新