我有以下形式的字符串
A-XXX
A-YYY
B-NNN
A-ZZZ
B-MMM
C-DDD
但是,我想在连字符之前获取每个字符串的第一次出现。所以这里的解决方案是:
A-XXX
B-NNN
C-DDD
我如何使用 bash 工具来做到这一点?我尝试了 uniq
,但我无法在那里设置“相似性模式”。
最佳答案
这就够了吗?
cat uwe
A-XXX
A-YYY
B-NNN
A-ZZZ
B-MMM
C-DDD
$ awk -F'-' '!a[$1]{print $0;a[$1]++}' uwe
A-XXX
B-NNN
C-DDD
编辑:
实际上可以将其缩短为稍微隐晦一点:
$ awk -F'-' '!a[$1]++' uwe
A-XXX
B-NNN
C-DDD
我们所做的是告诉awk -
是字段分隔符; !a[$1]
告诉 awk 执行以下命令(默认情况下不显示任何内容),然后递增检查是否看到值的数组。
关于linux - 获取许多相似字符串中的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54540329/