我如何只保留文件中的非重复行?

git*_*git 0 bash shell sed uniq

我想要做的就是在这样一个巨大的文件中保留不重复的行:

..
a
b
b
c
d
d
..
Run Code Online (Sandbox Code Playgroud)

然后是所需的输出:

..
a
c
..
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

pac*_*lik 5

uniq arg -u

  -u, --unique          only print unique lines
Run Code Online (Sandbox Code Playgroud)

例:

$ printf 'a\nb\nb\nc\nd\nd\n' | uniq -u
a
c
Run Code Online (Sandbox Code Playgroud)

如果您的数据未排序,sort请先进行操作

$ printf 'd\na\nb\nb\nc\nd\n' | sort | uniq -u
Run Code Online (Sandbox Code Playgroud)

保留订单:

$ cat foo
d
c
b
b
a
d

$ grep -f <(sort foo | uniq -u) foo
c
a
Run Code Online (Sandbox Code Playgroud)

greps通过上述获得的模式的文件uniq.但我可以想象,如果你的文件非常庞大,那么它需要很长时间.

没有一些丑陋的过程替换相同:

$ sort foo | uniq -u | grep -f- foo
c
a
Run Code Online (Sandbox Code Playgroud)