shell除去重复的行——uniq命令
From: http://blog.163.com/redhumor@126/blog/static/1955478420123119218332/
進行排序之后,您會發現有些行是重復的。有時候該重復信息是不需要的,可以將它除去以節省磁盤空間。不必對文本行進行排序,但是您應當記住
uniq
在讀取行時會對它們進行比較并將只除去兩個或更多的連續行。下面的示例說明了它實際上是如何工作的:
清單 1. 用 uniq 除去重復行
| $ cat happybirthday.txt Happy Birthday to You! Happy Birthday to You! Happy Birthday Dear Tux! Happy Birthday to You! $ sort happybirthday.txt Happy Birthday Dear Tux! Happy Birthday to You! Happy Birthday to You! Happy Birthday to You! $ sort happybirthday.txt | uniq Happy Birthday Dear Tux! Happy Birthday to You! |
警告:請不要使用
uniq
或任何其它工具從包含財務或其它重要數據的文件中除去重復行。在這種情況下,重復行幾乎總是表示同一金額的另一個交易,將它除去會給會計部造成許多困難。千萬別這么干!
有關 uniq 的更多信息
本系列文章介紹了文本實用程序,它對在手冊頁和信息頁找到的信息作了補充。如果您打開新的終端窗口并輸入
man uniq
或
info uniq
,或者打開新的瀏覽器窗口并查看 位于 gnu.org 的 uniq 手冊頁,那么就可以了解更多的相關信息。
?
如果您希望您的工作輕松點,比如只顯示唯一的或重復的行,那么該怎么辦呢?您可以用
-u
(唯一)和
-d
(重復)選項來做到這一點,例如:
清單 2. 使用 -u 和 -d 選項
| $ sort happybirthday.txt | uniq -u Happy Birthday Dear Tux! $ sort happybirthday.txt | uniq -d Happy Birthday to You! |
您還可以用
-c
選項從
uniq
中獲取一些統計信息:
清單 3. 使用 -c 選項
| $ sort happybirthday.txt | uniq -uc 1 Happy Birthday Dear Tux! $ sort happybirthday.txt | uniq -dc 3 Happy Birthday to You! |
就算
uniq
對完整的行進行比較,它仍然會很有用,但是那并非該命令的全部功能。特別方便的是:使用
-f
選項,后面跟著要跳過的字段數,它能夠跳過給定數目的字段。當您查看系統日志時這非常有用。通常,某些項要被復制許多次,這使得查看日志很難。使用簡單的
uniq
無法完成任務,因為每一項都以不同的時間戳記開頭。但是如果您告訴它跳過所有的時間字段,您的日志一下子就會變得更加便于管理。試一試
uniq -f 3 /var/log/messages
,親眼看看。
還有另一個選項
-s
,它的功能就像
-f
一樣,但是跳過給定數目的字符。您可以一起使用
-f
和
-s
。
uniq
先跳過字段,再跳過字符。如果您只想使用一些預先設置的字符進行比較,那么該怎么辦呢?試試看
-w
選項。
總結
以上是生活随笔為你收集整理的shell除去重复的行——uniq命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【vue】跟着老马学习vue-数据双向绑
- 下一篇: u3d 逐个点运动,路径运动。 U3d