成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Unix中統計、去除文件中的重復行

運維 系統運維
在數據庫中,如果表中記錄有重復的話,則只需要通過distinct關鍵字就可以達到去除重復行的目的。那么在Unix操作系統中,是否也有便利的工具能夠實現這個需求呢?答案當然是肯定的。為了實現這個需求,我們需要用到sort排序命令和uniq去除重復行命令。

在數據庫中,如果表中記錄有重復的話,則只需要通過distinct關鍵字就可以達到去除重復行的目的。那么在Unix操作系統中,是否也有便利的工具能夠實現這個需求呢?答案當然是肯定的。為了實現這個需求,我們需要用到sort排序命令和uniq去除重復行命令。

  眾所周知,在Unix系統維護中,系統工程師經常需要把多個文件合并成一個文件。此時就會遇到一個問題,即將多個文件連接或者合并在一起的時候,可能會產生重復的記錄。這是系統工程師不希望看到的。那么該如何消除這些重復的記錄呢?熟悉排序命令的讀者,一定知道利用sort排序命中一個-u 可選項可以達到刪除重復行的目的。但是這個功能并不是很強。如不能夠幫助系統工程師找出哪些行是重復的或者統計重復行出現的次數等等。要實現這些復雜的功能,就需要借助于這個uniq去除重復行命令了。

  ***步:先對文件中的記錄進行排序。

  如現在系統工程師將兩個文件合并后,產生如下一個文件log.txt。

  銷售部出現系統備份故障

  采購部出現系統備份故障

  銷售部出現系統備份故障

  財務部出現系統備份故障

  這是一個系統備份程序出現故障時的提示信息。為了便于管理,系統工程師往往先將一個星期或者半個月的錯誤記錄合并在同一個文件中。然后再把重復的記錄去除掉,就可以發現哪些部分的備份出了問題。如果不去掉重復行的話,那么一個個核對過去就會很麻煩。看著一長串錯誤列表(其實很多都是重復的),也不知道該如何下手。另外統計重復行出現的次數(每個部分系統備份故障程序的次數)也可以幫助系統工程師判斷這個錯誤是不是偶然性的。為此,現在系統工程師主要想實現三個功能。***是能夠統計這個文件中錯誤信息重復的次數;第二是能夠知道哪些故障信息出現了一次以上;第三就是得到一個去除了重復行的文件,以方便工程師分析問題原因并最終解決問題。這三個功能的話利用uniq命令都可以輕松解決。不過需要注意的是,在使用這個去除重復行的命令之前,必須要先對這個記錄文件進行排序。其實這個原理跟數據庫中的distinct去除重復行的關鍵字工作原理是類似的。在數據庫中采用這個關鍵字去除重復記錄時,數據庫會自動對相關的記錄進行排序,然后再去除重復行。而現在這個uniq命令自身沒有排序的功能。這也是Unix操作系統的一個特點,即每個命令只完成單一的功能。而這個去除重復行的uniq命令對于那些沒有經過排序的命令是不起任何作用的。如上面這個日志文件,如果文件中的記錄沒有排序,那么這個uniq命令就無法去除這個重復的記錄或者統計重復記錄出現的次數。為此系統工程師要做的***步,就是對這個文件排序。如可以使用sort log.txt>log1.txt命令,將這個日志文件中的記錄進行排序并將排序后的結果保存到一個文件中。

  第二步:利用uniq命令去除重復的行。

  當某個文件排序完成之后,就可以使用這個uniq命令來去除重復的行了。如使用uniq log1.txt(注意這里使用的是排序后的文件),系統工程師就可以得到如下的結果:

  采購部出現系統備份故障

  財務部出現系統備份故障

  銷售部出現系統備份故障

  從這個結果中可以看出,系統由四條記錄變為了三條,取出了一條重復行的記錄。也就是說,這個uniq命令會讀取文件中每一行的內容寫入到標準輸出。如果在讀取行的時候,遇到多行重復內容的話,則只輸出其中的一行。通過這個工作記錄,就可以實現去除重復行的目的。需要注意的是,有時候系統工程師想要將這個處理的結果保存到一個文件中。這個跟其他命令的處理方式不一樣。如像ps等命令,想將命令的執行結果保存到一個文件中,則需要采用重定向符號>。但是這個uniq命令則不同。因為這個命令本省就可以帶兩個文件名作為參數。如uniq 原文件 目標文件。注意這個格式并不是說讓操作系統分別對原文件與目標文件都進行去除重復行的動作。而是對原文件進行去除重復行的操作,然后將執行的結果保存到目標文件中。也就是說,此時uniq命令只是對原文件進行處理,并不會對目標文件進行任何去除重復行的操作。換一句話說,uniq命令一次只能夠對一個文件進行去除重復行的操作。另外就是需要注意的是,將執行的結果保存到一個文件中不需要用到重定向符號。

 

#p#

第三步:將以上兩個步驟合二為一。

  如果按照上面那個步驟來進行操作,雖然是可行的,思路也比較清晰。但是中間會多一個排序生成的過渡文件。等操作完成后,需要手工將這個文件刪除。顯然這增加了工作量。用過管道符的讀者一定知道,這個管道符有一個很特殊的用途。即將某個命令的執行結果傳遞給下一個命令,讓其作為下一個命令的參數。如可以使用命令sort log.lst | uniq –loguniq.lst。

  這個命令是什么意思呢?首先是利用sort命令對log.lst文件中的記錄進行排序。然后將排序的結果傳遞給uniq命令。***操作系統會將去除重復行后的記錄保存到loguniq.lst文件中。注意,這里將執行的結果保存到文件中也沒有使用這個>重定向符號。而是采用了“-文件名”這個可選項。這個對于那些熟悉重定向符號的讀者可能看起來不怎么舒服。但是這是Unix系統中文件中的一個例外,各位系統工程師只需要記住即可。利用上面這個命令,來代替上面兩個步驟,除了工作量減輕不少以外,最重要的就是不會產生中間的垃圾文件。即這個命令執行的過程中,不會產生排序后的文件。

  第四步:選取重復的行或者統計重復行出現的次數。

  以上三個步驟只是完成了一項功能,即去除文件中重復的記錄。如果需要對文件中重復的記錄進行統計,或者只顯示重復的行,則各位讀者還需要關注一下筆者下面給大家講述的內容。要實現這兩個功能,就需要用到三個可選項,分別為-u、-d與-c。其中-u表示只讓操作系統顯示沒有重復的行。-d是告訴操作系統只顯示重復的記錄。而可選項-c是讓系統統計重復行出現的次數,并且會在記錄的前面加一列內容,表示重復行出現的次數。注意,系統工程師也可以將這些結果保存到一個文件中。但是同上面的原理一樣,不需要使用管道符號來實現這個目的。可以直接在原文件后面加入一個目標文件,來實現保存結果的目的。

  第五步:截取特定的列來去除重復記錄。

  如上面這個文件中,不止一個列。如上面這個文件,其內容如下:

  銷售部出現系統備份故障 故障日期2009年6月3日

  采購部出現系統備份故障 故障日期2009年6月5日

  銷售部出現系統備份故障 故障日期2009年6月6日

  此時文件中的記錄是沒有重復的。但是系統工程師想獲得的信息是哪幾個部門在重復的出現類似的問題。此時系統工程師需要先截取某一個列,如***列中的信息。然后再將***列中的內容利用uniq命令來去除重復的行或者統計重復行出現的次數。要實現這個目的的話,也比較簡單。只是在上面幾個步驟中,多了一個前期的準備工作而已。即通過cut等類似的命令,將文件中的某列內容截取出來,保存到一個文件中。然后再進行排序與去除重復行的操作。如果系統工程師不想產生中間文件,也可以利用管道符將cut、sort、uniq等三個命令連接起來。另外如果以后需要多次用到這個功能,工程師想貪圖方便的話,還可以將這個命令以別名的形式保存起來。如此的話,下次直接將這個命令的組合當作系統命令來使用即可。

【編輯推薦】

  1. Linux下隱藏網絡連接的另一種方法
  2. Linux中學會靈活使用shell下的特殊字符
  3. Linux下查看用戶登陸后的操作記錄
責任編輯:龐桂玉 來源: ChinaITLab
相關推薦

2019-12-12 18:00:54

awkLinux開源

2010-09-01 16:47:18

SQL刪除

2011-07-19 16:14:39

SQLite數據庫

2010-05-11 19:08:36

Unix系統

2010-05-10 19:03:00

Unix文件

2015-09-17 13:26:56

線程數進程Linux

2009-04-20 15:54:04

SQL Server重復行

2010-06-28 12:46:09

SQL Server

2010-04-30 17:21:50

Unix操作系統

2010-04-13 14:19:51

Unix文件

2010-04-30 18:25:25

Unix刪除

2010-04-30 11:22:23

Unix系統

2010-05-05 16:36:24

Unix系統

2010-04-29 16:15:26

Unix文件

2010-05-04 09:22:10

Unix文件

2012-05-10 08:55:11

Linuxuniq

2009-09-29 10:45:17

UnixLinuxshell

2010-05-04 15:29:57

Unix dos

2010-04-26 14:04:18

Unix Shell

2010-05-04 08:52:13

Unix系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 涩涩99 | 国产精品成av人在线视午夜片 | 日韩中文字幕区 | 成人在线精品视频 | 一道本不卡 | 久久久久久91 | 国产精品1区 | 成人精品一区二区三区中文字幕 | 一区二区久久 | 青青草原精品99久久精品66 | 欧美 日韩 国产 成人 | 国产一区二区精品自拍 | 免费毛片网 | 中文字幕在线免费观看 | 四虎成人av | 黄色大片网 | 亚洲综合五月天婷婷 | 日韩一区二区免费视频 | 欧美成人一区二区 | 在线观看免费毛片 | 欧美一级片在线 | 日韩一二区 | 鸳鸯谱在线观看高清 | 91青青草视频 | 91在线观| 国产精品不卡一区 | 四虎影院在线免费观看 | 给我免费的视频在线观看 | 免费欧美 | 黄色网毛片 | 欧美激情精品久久久久久 | 欧美一区二区三区在线观看 | 日本中文字幕在线视频 | 97久久久 | 亚洲福利视频一区二区 | 一级看片免费视频 | 日韩欧美专区 | 成人精品一区二区三区 | 国产高清在线精品一区二区三区 | 久久亚洲欧美日韩精品专区 | 成人午夜视频在线观看 |