python - 使用 awk/python 从 CSV 文件中删除重复行
问题描述
我有一个file1.csv行,如:
adx,999-99-7708
ada,999-99-8101
ad1,999-99-8342
zda,103-54-7013
ad1,999-99-8591
file2.csv的行如下:
1967-05-08,583-50-3833,Trac,Mich,Ewell,3000,Cumming,3830 Man Rid Driv,tracey@gmail.com,(111) 123-4567,0123,GA,339061
1988-03-27,103-54-7013,Mar,Grac,Vea,30004,Au,2549 Walt Wa Apt D1,m@augu.edu,(706) 916-4817,021341,GA,339060
1973-11-16,183-54-5013,Carl,,Thom,30093,Norcross,1021 Ri Rid Drive,,,,,339059
想要的输出:
1967-05-08,583-50-3833,Trac,Mich,Ewell,3000,Cumming,3830 Man Rid Driv,tracey@gmail.com,(111) 123-4567,0123,GA,339061
1973-11-16,183-54-5013,Carl,,Thom,30093,Norcross,1021 Ri Rid Drive,,,,,339059
我试过了
awk -F, 'NR==FNR{a[$2]++; next} !a[$2]{print}' file1.txt file2.txt
从 file1.txt 检查 file2.txt 的重复项并删除它们,但仍然得到输出
1967-05-08,583-50-3833,Trac,Mich,Ewell,3000,Cumming,3830 Man Rid Driv,tracey@gmail.com,(111) 123-4567,0123,GA,339061
1988-03-27,103-54-7013,Mar,Grac,Vea,30004,Au,2549 Walt Wa Apt D1,m@augu.edu,(706) 916-4817,021341,GA,339060
1973-11-16,183-54-5013,Carl,,Thom,30093,Norcross,1021 Ri Rid Drive,,,,,339059
当应该删除带有103-54-7013的第 2行时。我在 awk 上做错了什么?
解决方案
这个 awk 有效:
awk -F, 'NR==FNR{seen[$2]; next} !($2 in seen)' f1 f2
印刷:
1967-05-08,583-50-3833,Trac,Mich,Ewell,3000,Cumming,3830 Man Rid Driv,tracey@gmail.com,(111) 123-4567,0123,GA,339061
1973-11-16,183-54-5013,Carl,,Thom,30093,Norcross,1021 Ri Rid Drive,,,,,339059
您的 awk似乎也可以正常工作。您确定它是简单的 csv,分隔符中没有空格吗?
推荐阅读
- django - customize save function of rest-auth registration
- sql - Select data where days between two dates are part of a given month
- java - jTree 不区分大小写
- c++ - 为什么这个悬空的 std::weak_ptr 不会导致 SEGFAULT?
- javascript - AngularJS two http get in one controller make problems
- react-native - react-navigation:带有嵌套导航器的全屏背景
- sql - 使用重复的列名连接 SQL 中的三个表
- google-apps-script - 将数据从一张纸保存到另一张纸的最后一行
- ios - 如何在 FileManager 中保存多个 UIImages
- android - FCM:onNewToken 与 FirebaseInstanceId