Linux 删除任何重复行并保持原始顺序的脚本

Linux 删除任何重复行并保持原始顺序的脚本,linux,shell,ubuntu,terminal,Linux,Shell,Ubuntu,Terminal,需要编写一个脚本来处理标准输入,并删除在标准输入结束前发现的每个重复行。将删除线性副本的每个副本以及第一个选项,而不管条目中是否有其他副本或分散的副本。标准输出仅显示没有重复条目的行(按收到的条目顺序)。 例如,我们的文件test.txt包含以下内容: Whatever You Want You To Whatever Have Here 输出应该删除所有重复的行,行的顺序与输入相同,如下所示: Want To Have Here 注意,我们不知道文件包含什么(这只是一个示例)。我测试了许多

需要编写一个脚本来处理标准输入,并删除在标准输入结束前发现的每个重复行。将删除线性副本的每个副本以及第一个选项,而不管条目中是否有其他副本或分散的副本。标准输出仅显示没有重复条目的行(按收到的条目顺序)。
例如,我们的文件
test.txt
包含以下内容:

Whatever
You
Want
You
To
Whatever
Have
Here
输出应该删除所有重复的行,行的顺序与输入相同,如下所示:

Want
To
Have
Here
注意,我们不知道文件包含什么(这只是一个示例)。我测试了许多命令,但找不到一个有效且符合要求的命令

重要提示:我需要删除该行出现的所有内容

  not only all of them after the first one 

我不知道“每个副本以及线性副本的第一个选项都将被删除”是什么意思,但我认为您只是在寻找:

awk '!a[$0]++'
或许:

awk '!a[$1]++'
例如:


示例输入包含按空格数不同的行(例如:
You
You
)。为什么输出将它们视为相同的?对于“小”输入中第一次出现的相同行:
| awk'!查看[$0]+'
获取大输入:
|cat-n | sort-k2 | uniq-f1 | sort-n-k1,1 | sed'^[0-9]*\t/'
获取大输入:在数据库中存储行并执行查找sed命令在我输入时被损坏:
| cat-n | sort-k2-s | uniq-f1 | sort-n-k1/'s^[1240]*\t/'
我需要所有重复的行deleted@JonBjatBun我不明白你的评论。第一种解决方案删除所有重复的行。第二种解决方案删除所有只复制第一列的行。
$ cat input
Whatever
You
Want
Whatever 1
You
To
Whatever 1
Have
Here
$ awk '!a[$0]++' input
Whatever
You
Want
Whatever 1
To
Have
Here
$ awk '!a[$1]++' input
Whatever
You
Want
To
Have
Here