awk - 如何删除重复字符并仅保留一次?
问题描述
我是 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
解决方案
你很接近。尝试:
awk '$2 != "Cl" || !dup++'
这将打印第一个 Cl 并删除其余部分。
推荐阅读
- dependencies - yum 包含对 vscode 1.56.1 的依赖,已删除
- macos - Rsync将目录从远程复制到本地空间不起作用
- android - 将 Android Studio 更新到 4.2 后编译错误
- react-native - 部署密钥是空的 appcenter 代码推送 cli
- c++ - 有没有一种有效的方法来生成 N 小于 X 的因子数?
- r - 我可以在 R 中提取 pdf 的结构来检查作者、日期等信息并将其存储在例如数据框中吗?
- html - 在 Visual Studio 代码中使用 emmet 的问题
- python - AttributeError:“浮动”对象没有属性“_get_axis_number”
- oracle - 创建物化视图日志报错ORA-01031
- api - 使用 Jmeter 调用 Twitter API 端点