下面的awk
命令删除所有重复的行,如下所示:
awk '!seen[$0]++'
如果文本包含空行,则将删除除一个空行以外的所有行。
如何仅使用保留所有空行,同时删除所有非空重复行awk
?请也提供简短的说明。
下面的awk
命令删除所有重复的行,如下所示:
awk '!seen[$0]++'
如果文本包含空行,则将删除除一个空行以外的所有行。
如何仅使用保留所有空行,同时删除所有非空重复行awk
?请也提供简短的说明。
Answers:
awk '/^[[:blank:]]*$/ { print; next; }; !seen[$0]++'
您所要做的就是首先检查空白行(真的是空白还是空白)。
这是另一种awk
解决方案,类似于@Thor的回答,简洁性不高,但效率更高:
awk '!NF {print;next}; !($0 in a) {a[$0];print}' file
这样,我们仅检查a[$0]
是否存在。如果没有,请进行初始化然后打印。在这种情况下,我们没有任何引用,a[$0]
如果有的话也没有分配。