awk - 用于删除重复行的 shell awk 脚本

标签 awk

我试图从文件中删除重复的行,包括原始行,但我正在尝试的以下命令是对行进行排序,我希望它们的顺序与它们在输入文件中的顺序相同。

awk '{++a[$0]}END{for(i in a) if (a[i]==1) print i}' test.txt
Input:
123
aaa
456
123
aaa
888
bbb

Output I want:
456
888
bbb

最佳答案

如果您可以读取输入文件两次,则代码更简单:

$ awk 'NR==FNR{a[$0]++; next} a[$0]==1' ip.txt ip.txt
456
888
bbb

单程:
$ awk '{a[NR]=$0; b[$0]++} END{for(i=1;i<=NR;i++) if(b[a[i]]==1) print a[i]}' ip.txt
456
888
bbb

关于awk - 用于删除重复行的 shell awk 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60943841/

相关文章:

scripting - 使用 Awk 或 Cut 打印列?

linux - 使用 awk 将登录统计信息打印到文件

bash if 语句,版本是否低于要求?

linux - 使用awk提取理想字符串

linux - AWK 在 Bash 脚本中不起作用

linux - 如何使用 bash 脚本修改多个文件

linux - awk里面期待

awk - 使用 Awk 搜索包含空格的字符串

linux - 修复现有系统日志文件中的时间戳偏差

regex - 用于替换文件中第一次出现的 sed 命令不起作用