Uwe*_*ler 1 unix linux bash grep sed
我有形式的字符串
A-XXX
A-YYY
B-NNN
A-ZZZ
B-MMM
C-DDD
Run Code Online (Sandbox Code Playgroud)
但是,我希望在连字符之前首先出现每个字符串.所以这里的解决方案是:
A-XXX
B-NNN
C-DDD
Run Code Online (Sandbox Code Playgroud)
如何使用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
Run Code Online (Sandbox Code Playgroud)
编辑:
实际上,人们可以将其缩短为更加神秘的内容:
$ awk -F'-' '!a[$1]++' uwe
A-XXX
B-NNN
C-DDD
Run Code Online (Sandbox Code Playgroud)
我们要做的是告诉awk -是字段分隔符; !a[$1]告诉awk执行以下命令(没有给出print是默认值),并且后续递增检查是否看到值的数组.