Linux 命令 uniq
:去重利器
在 Linux 系統中,處理文本數據是日常任務中不可或缺的一部分。當我們面對大量重復的數據行時,如何高效地去除這些重復項成為了一個值得探討的話題。這時,uniq
命令就派上了用場。本文將介紹 uniq
命令的基本用法、選項以及一些實用技巧。
uniq 命令簡介
uniq
命令用于從排序好的文本文件中去除重復的行,只顯示唯一的行。注意,uniq
命令通常與 sort
命令結合使用,因為 uniq
需要輸入的數據已經預先排序過。
基本用法
uniq [options] [file ...]
[options]
:命令選項,用于指定不同的行為。[file ...]
:要處理的文件列表。如果未指定文件,uniq
將從標準輸入讀取數據。
常用選項
-c 或 --count
在每行前加上該行在文件中出現的次數。
-d 或 --repeated
僅顯示重復的行。
-D 或 --all-repeated[=delim]
顯示所有重復的行,并在每組重復行之間插入指定的分隔符(默認為空行)。
-f n 或 --skip-fields=n
忽略每行前 n 個字段的比較。字段之間由制表符分隔。
-i 或 --ignore-case
比較時不區分大小寫。
-s n 或 --skip-chars=n
忽略每行前 n 個字符的比較。
-u 或 --unique
僅顯示唯一的行。
-z, --zero-terminated
以空字符(null)而不是換行符來結束每行。這在處理包含換行符的字段時特別有用。
示例
示例 1:去除重復行
假設我們有一個名為 numbers.txt
的文件,內容如下:
1
2
2
3
4
4
4
5
要去除重復的行,我們可以這樣做:
sort numbers.txt | uniq
輸出:
1
2
3
4
5
示例 2:顯示重復行的次數
使用 -c
選項,我們可以在每行前顯示其出現的次數:
sort numbers.txt | uniq -c
輸出:
1 1
2 2
1 3
3 4
1 5
示例 3:僅顯示重復行
使用 -d
選項,我們可以僅顯示重復的行:
sort numbers.txt | uniq -d
輸出:
2
4
注意事項
uniq
命令僅對排序后的數據有效。如果輸入數據未排序,則結果可能不正確。uniq
命令是基于整行進行比較的。如果只想基于行的某個部分進行比較,可以使用其他工具(如awk
、sed
或cut
)進行預處理。
總結
uniq
命令是一個簡單而強大的工具,用于從排序好的文本文件中去除重復的行。通過結合不同的選項,我們可以實現各種復雜的文本處理任務。希望本文能幫助你更好地理解和使用 uniq
命令。