Linux下文本處理工具很豐富很強(qiáng)大,例如這樣一個(gè)文件:
復(fù)制代碼 代碼如下:
cat log
www.jb51.net 192.168.1.1
www.jb51.net 192.168.1.1
www.jb51.net 192.168.1.2
ffffffffffffffffff
ffffffffffffffffff
eeeeeeeeeeeeeeeeeeee
fffffffffffffffffff
eeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeee
gggggggggggggggggggg
可用以下方法去除重復(fù)行:
1.使用uniq/sort刪除重復(fù)行
注意:?jiǎn)渭僽niq是不行的。
復(fù)制代碼 代碼如下:
shell> sort -k2n file | uniq > a.out
這里我做了個(gè)簡(jiǎn)單的測(cè)試,當(dāng)file中的重復(fù)行不再一起的時(shí)候,uniq沒法刪除所有的重復(fù)行。經(jīng)過排序后,所有相同的行都在相鄰,因此unqi可以正常刪除重復(fù)行。
2.使用用sort+awk命令
注意:?jiǎn)渭僡wk同樣不行,原因同上。
復(fù)制代碼 代碼如下:
shell> sort -k2n file | awk '{if ($0!=line) print;line=$0}'
也可以使用 awk '!i[$1]++' log;
3.用sort+sed命令,同樣需要sort命令先排序。
復(fù)制代碼 代碼如下:
shell> sort -k2n file | sed '$!N; /^\(.*\)\n\1$/!P; D'
您可能感興趣的文章:- 判斷文件是否存在的shell腳本代碼
- Shell逐行讀取文件的4種方法
- shell去掉文件中空行(空白行)的方法詳解
- shell腳本中執(zhí)行時(shí)提示“沒有那個(gè)文件或目錄”的解決辦法
- shell按行讀取文件的3種方法
- Shell腳本統(tǒng)計(jì)文件行數(shù)的8種方法
- Shell獲取文件的文件名和擴(kuò)展名的例子
- Shell中調(diào)用、引用、包含另一個(gè)腳本文件的三種方法
- shell判斷文件,目錄是否存在或者具有權(quán)限的代碼
- shell兩個(gè)文件去重的多種姿勢(shì)