[英]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.