文字去重 awk或者uniq

2021-06-18 16:18:55 字數 1302 閱讀 8337

對於awk '!a[$3]++',需要了解3個知識點

1、awk陣列知識,不說了

2、awk的基本命令格式 awk 'pattern'

省略action時,預設action是,如awk '1'就是awk '1'

3、var++的形式:先讀取var變數值,再對var值+1

以資料1 2 3

1 2 3

1 2 4

1 2 5

為例,對於awk '!a[$3]++'

awk處理第一行時: 先讀取a[$3]值再自增,a[$3]即a[3]值為空(0),即為awk '!0',即為awk '1',即為awk '1'

awk處理第二行時: 先讀取a[$3]值再自增,a[$3]即a[3]值為1,即為awk '!1',即為awk '0',即為awk '0'

.............

最後實現的效果就是對於$3是第一次出現的行進行列印,也就是去除$3重複的行

**:

sort和uniq

重複行通常不會造成問題,但是有時候它們的確會引起問題。此時,不必花上乙個下午的時間來為它們編制過濾器,uniq 命令便是唾手可得的好工具。

了解一下它是如何節省您的時間和精力的。進行排序之後,您會發現有些行是重複的。有時候該重複資訊是不需要的,可以將它除去以節省磁碟空間。不必對文字行進行排序,但是您應當記住 uniq 在讀取行時會對它們進行比較並將只除去兩個或更多的連續行。下面的示例說明了它實際上是如何工作的:

1. 用 uniq 除去重複行

警告:請不要使用 uniq 或任何其它工具從包含財務或其它重要資料的檔案中除去重複行。在這種情況下,重複行幾乎總是表示同一金額的另乙個交易,將它除去會給會計部造成許多困難。千萬別這麼幹! 

2. 使用 -u 和 -d 選項 

您還可以用 -c 選項從 uniq 中獲取一些統計資訊:

清單3. 使用 -c 選項 

就算 uniq 對完整的行進行比較,它仍然會很有用,但是那並非該命令的全部功能。特別方便的是:使用 -f 選項,後面跟著要跳過的字段數,它能夠跳過給定數目的字段。當您檢視系統日誌時這非常有用。通常,某些項要被複製許多次,這使得檢視日誌很難。使用簡單的 uniq 無法完成任務,因為每一項都以不同的時間戳記開頭。但是如果您告訴它跳過所有的時間字段,您的日誌一下子就會變得更加便於管理。試一試 uniq -f 3 /var/log/messages ,親眼看看。

還有另乙個選項 -s ,它的功能就像 -f 一樣,但是跳過給定數目的字元。您可以一起使用 -f 和 -s 。 uniq 先跳過字段,再跳過字元。如果您只想使用一些預先設定的字元進行比較,那麼該怎麼辦呢?試試看 -w 選項。

**:

finger print 文字去重

任何一段資訊文字,都可以對應乙個不太長的隨機數,作為區別它和其它資訊的指紋 fingerprint 只要演算法設計的好,任何兩段資訊的指紋都很難重複,就如同人類的指紋一樣。資訊指紋在加密 資訊壓縮和處理中有著廣泛的應用。string content2 卓爾防線繼續傷筋動骨 隊長梅方出場再補漏說起來卓...

資料 文字去重

先排序,後取重 sort file.txt uniq usr bin python coding utf 8 import sys reload sys sys.setdefaultencoding utf 8 def text duplicate byset sourcepath,destpath...

shell入門 uniq去重複和tee重定向

命令 uniq 選項 c 顯示重複數量 說明 去重複,不sort多個功能,顯示幾個重複 命令 tee 說明 重定向加上雙重輸出 root wangshaojun cat 2.txt12 2233 41ac5 root wangshaojun uniq 2.txt 消除順序挨著的重複段12 341ac...