给定一个像这样的长文本文件(我们将其称为file.txt
):
编辑过
1 AA
2 ab
3 azd
4 ab
5 AA
6 aslmdkfj
7 AA
如何删除bash在同一文件中至少出现两次的行? 我的意思是我想要这个结果:
1 AA
2 ab
3 azd
6 aslmdkfj
给定一个特定的文本文件,我不想在同一行中加倍。你能告诉我命令吗?
最佳答案
假设空格很大,典型的解决方案是:
awk '!x[$0]++' file.txt
(例如,“ab”行与“ab”不相同。如果要不同地对待空格,则对数据进行预处理可能最简单。)
- 编辑 -
给定修改后的问题,我将其解释为仅希望在给定列之后检查唯一性,请尝试以下操作:
awk '!x[ substr( $0, 2 )]++' file.txt
这只会比较第2列到该行的末尾,而忽略第一列。这是一个典型的awk习惯用法:我们只是在构建一个名为
x
的数组(一个字母变量名在脚本中是一个糟糕的主意,但对于命令行中的单行代码是合理的),该数组保存给定字符串的次数被看到。第一次看到它,它被打印。在第一种情况下,我们将使用$0
中包含的整个输入行。在第二种情况下,我们仅使用由第二个字符及其后的所有内容组成的子字符串。关于linux - 如何删除bash中的双行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12149064/