Linux命令删除重复行但保留第一次出现的行

use*_*654 3 linux command-line string-manipulation ubuntu

我有一个文本文件。每行包含一个字符串。有些字符串是重复的。我想删除重复的内容,但我想保留第一次出现的内容。例如:

line1
line1
line2
line3
line4
line3
line5
Run Code Online (Sandbox Code Playgroud)

应该

line1
line2
line3
line4
line5
Run Code Online (Sandbox Code Playgroud)

我尝试过:sort file1 | uniq -u > file2但这没有帮助。它删除了所有重复的字符串,而我希望出现第一个字符串。我不需要排序。只需删除新行中字符串的精确重复,同时保持其他所有内容不变即可。

Kam*_*ski 5

如果您无论如何都允许排序,那么这将起作用:

sort | uniq
Run Code Online (Sandbox Code Playgroud)

-u是你麻烦的根源,因为(来自man 1 uniq):

-u--unique
只打印唯一的行

而默认情况下:

如果没有选项,匹配的行将合并到第一次出现的位置。