如何在忽略空白行的同时从txt文件中“删除”重复的行?而不是删除我想在行中添加//
(注释)的前缀。
我从搜索中发现此命令awk ' !x[$0]++'
将删除文件中的所有重复行以及空行。如果可能的话,修改awk
命令会很棒。
原始输入:
foo
bar
cat
dog
turtle
cat
bar
lion
bear
bird
fish
cat
输出:
foo
bar
cat
dog
turtle
// cat
// bar
lion
bear
bird
// lion
bird
只需要忽略空白换行符和
答案 0 :(得分:8)
以下是使用awk
的一种方式:
$ awk 'NF{x[$0]++; print (x[$0]>1?"//"$0:$0); next}1' file
foo
bar
cat
dog
turtle
//cat
//bar
lion
bear
bird
fish
//cat
NF
告诉awk仅对非空行执行操作。我们将存储每一行的数组x
增加为关键字。如果计数大于1,我们打印带//
前缀的行,否则我们只按原样打印该行。 1
允许我们保留空白行。