簡體   English   中英

Unix Shell腳本:從行忽略空白行中刪除重復項

[英]Unix Shell Script: Remove duplicates from line ignore blank lines

如何在忽略空行的同時從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

只需要忽略空白換行符

這是使用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允許我們保留空白行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM