首页 > 解决方案 > 如何删除重复字符并仅保留一次?

问题描述

我是 shell 脚本的初学者,我需要自动化删除一堆文件的重复项的过程。我的文件示例:

1   Br  Atom
2   Cl  Atom
3   F   Atom
4   P   Atom
5   Al  Atom
6   Rh  Atom
7   Cl  Atom
8   Cl  Atom
9   Mg  Atom
10  O   Atom
11  N   Atom
12  H   Atom
13  H   Atom
14  H   Atom
15  H   Atom
16  H   Atom
17  Cl  Atom

我正在寻找的是去除所有的“Cl”原子,只留下一个“Cl”,不管是哪一个。我尝试了不同的命令,例如 sort with uniq 和命令awk '!a[$2]++'atomos.txt,但没有得到想要的结果。我需要删除特定的重复原子而不接触其他原子,并且其他原子的顺序必须保持相同。所需的输出:

1   Br  Atom
3   F   Atom
4   P   Atom
5   Al  Atom
6   Rh  Atom
7   Cl  Atom
9   Mg  Atom
10  O   Atom
11  N   Atom
12  H   Atom
13  H   Atom
14  H   Atom
15  H   Atom
16  H   Atom

标签: awksedgrep

解决方案


你很接近。尝试:

awk '$2 != "Cl" || !dup++'

这将打印第一个 Cl 并删除其余部分。


推荐阅读