首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除跨多个txt文件的重复行

问删除跨多个txt文件的重复行
EN

Unix & Linux用户
提问于 2022-01-14 17:52:22
回答 1查看 979关注 0票数 -1

我有12个文本文件都在一个文件夹中,每个文件都有大约500万行,每个文件本身没有重复行,但是在多个文件中重复,我想删除每个文件中的重复行,但仍然单独保存它们,我尝试了许多Linux排序命令,它不断地将文件合并在一起,我有Windows、Linus和Mac,有任何代码或应用程序可以这样做吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-01-14 18:23:38

若要删除所有重复项,但保留第一个文件中的第一个副本,并从其他文件中删除,您可以使用awk如下所示,这也保留了行的顺序。

代码语言:javascript
复制
awk '!seen[$0]++ { print >FILENAME".new" }' file1 file2 ... file12

这里不需要通过awk关闭打开的文件,因为最多可以关闭12个文件,但是在每个文件处理和完成后仍然可以关闭()文件。

代码语言:javascript
复制
awk '!seen[$0]++ { 
    if(prev!=FILENAME) close(prev".new");
    print >FILENAME".new";
    prev=FILENAME }
' file1 file2 ... file12

您可以使用外壳和外部命令mv将输出文件重命名为原始名称(也可以使用rename命令):

代码语言:javascript
复制
for file in ./*.new; do echo mv -v -- "$file" "${file%.new}"; done

注意:如果您对结果满意,请删除echo。

如果您有GNU,您可以使用-i inplace选项修改文件的位置并简化整个命令,如下所示:

代码语言:javascript
复制
gawk -i inplace '!seen[$0]++' file1 file2 ... file12
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/686377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档