Unix Shell脚本:从行忽略空白行中删除重复项

use*_*703 2 unix bash shell awk sh

如何在忽略空行的同时从txt文件中"删除"重复的行?而不是删除我想//在行中添加(注释)的前缀.

我从搜索中发现,此命令awk ' !x[$0]++'将删除文件中的所有重复行以及空行.awk如果可能,修改该命令将是很好的.

原始输入:

foo
bar
cat

dog
turtle
cat
bar
lion
bear

bird
fish
cat
Run Code Online (Sandbox Code Playgroud)

输出:

foo
bar
cat

dog
turtle
// cat
// bar
lion
bear

bird
// lion
bird
Run Code Online (Sandbox Code Playgroud)

只需要忽略空白换行符

jay*_*ngh 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
Run Code Online (Sandbox Code Playgroud)

NF告诉awk只对非空行执行操作.我们将x存储每一行的数组增加为关键.//如果计数大于1,我们打印带前缀的行,否则我们只按原样打印该行.1允许我们保留空白行.