有没有办法在Unix中删除文件中的重复行?
我可以使用sort -u和uniq命令,但我想使用sed或awk.那可能吗?
我有两个文件.我试图删除文件2中的任何行,当它们匹配file1中找到的值.一个文件有这样的列表:
文件1
ZNI008
ZNI009
ZNI010
ZNI011
ZNI012
Run Code Online (Sandbox Code Playgroud)
...超过19463行
第二个文件包含与第一个文件中列出的项匹配的行:File2
copy /Y \\server\foldername\version\20050001_ZNI008_162635.xml \\server\foldername\version\folder\
copy /Y \\server\foldername\version\20050001_ZNI010_162635.xml \\server\foldername\version\folder\
copy /Y \\server\foldername\version\20050001_ZNI012_162635.xml \\server\foldername\version\folder\
copy /Y \\server\foldername\version\20050001_ZNI009_162635.xml \\server\foldername\version\folder\
Run Code Online (Sandbox Code Playgroud)
...继续列出直到第51360行
到目前为止我尝试过的:
grep -v -i -f file1.txt file2.txt > f3.txt
Run Code Online (Sandbox Code Playgroud)
不会产生任何输出f3.txt或删除任何行.我通过跑步验证
wc -l file2.txt
Run Code Online (Sandbox Code Playgroud)
结果是
51360 file2.txt
Run Code Online (Sandbox Code Playgroud)
我相信原因是没有确切的匹配.当我运行以下内容时,它什么也没显示
comm -1 -2 file1.txt file2.txt
Run Code Online (Sandbox Code Playgroud)
运行
( tr '\0' '\n' < file1.txt; tr '\0' '\n' < file2.txt ) | sort | uniq -c | egrep -v '^ +1'
Run Code Online (Sandbox Code Playgroud)
只显示一场比赛,即使我可以清楚地看到有多场比赛.
或者将所有数据放入一个文件并运行以下命令:
grep -Ev "$(cat file1.txt)" 1>LinesRemoved.log …Run Code Online (Sandbox Code Playgroud)