一、uniq命令簡介
uniq命令是一個用於去除輸入文件中重複行的命令。它能夠去除相鄰的重複行,也能去除整個文件中的重複行。uniq命令的基本語法為:
uniq [options] [input_file [output_file]]
其中,options為可選參數,input_file為輸入文件名,output_file為輸出文件名。如果不指定任何參數,則從標準輸入讀入數據,並輸出到標準輸出。
二、常用參數
uniq命令的常用參數如下:
- -c:顯示重複行的出現次數,同時會將輸出結果進行排序。
- -d:只顯示重複行。
- -u:只顯示不重複的行。
- -f:指定從第幾個字段開始進行去重(默認是第一個字段)。
- -s:指定從第幾個字符開始進行去重(默認是第一個字符)。
三、使用例子
例子1:從文件中去重
假設有一個名為numbers.txt的文件,包含以下內容:
1111 2222 3333 1111 4444
使用命令uniq numbers.txt可以得到以下結果:
1111 2222 3333 1111 4444
可以看到,相鄰的重複行並沒有被去掉。如果想去除相鄰的重複行,可以使用uniq命令的-s參數,該參數指定從第幾個字符開始比較:
uniq -s 0 numbers.txt
輸出結果如下:
1111 2222 3333 1111 4444
同樣的結果。現在,我們使用uniq命令的-c參數來計算每行重複出現的次數:
uniq -c numbers.txt
輸出結果如下:
2 1111 1 2222 1 3333 1 1111 1 4444
可以看到,輸出結果中每行前面都有一個數字代表該行出現的次數。通過這個命令,我們可以很方便地找到重複出現次數超過一定閾值的行。
例子2:從標準輸入中讀取數據
uniq命令不僅可以從文件中讀取數據,還可以從標準輸入中讀取數據。例如,我們可以使用cat命令將多個文件的內容輸出到標準輸出,並使用管道將輸出結果傳給uniq命令:
cat file1 file2 file3 | uniq
這條命令將對cat命令輸出的結果進行去重。
例子3:去除重複的IP地址
在日常工作中,經常需要從日誌文件中提取出IP地址並進行去重,可以使用下面的命令:
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log | uniq -c | sort -rn
該命令的含義是:首先使用grep命令從access.log文件中提取出IP地址,並使用uniq命令進行去重並計算重複出現次數,最後使用sort命令進行排序。
四、總結
uniq命令是一個非常實用的工具,能夠方便地對輸入文件中的重複行進行去重。通過本文的介紹,相信大家已經掌握了該命令的基本用法和常用參數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/270853.html