Linux下文本文件合併和去除重複操作

Linux下處理文本的能力還是很強大的。
本文主要涉及到的命令爲cat  uniq sort。

一 命令簡單介紹

cat:將文本文件讀出來 (concatenate files and print on the standard output)
文件去重合並的前提條件是先取出文件的內容。

uniq: 用來處理重複的行。(report or omit repeated lines)
Filter  adjacent matching lines from INPUT (or standard input), writing to OUTPUT (or  standard output).
從輸入或者標準輸入中過濾鄰近的行,寫到輸出文件或者標準輸出中。所以此命令只能處理鄰近的行,
如果對兩個文件進行合併去重,則必須首先對其排序,實現一一對應,否則去重失敗。

sort:對文本的行進行排序(sort lines of text files)
Write sorted concatenation of all FILE(s) to standard output.
對於去重而言使用默認排序方式就可以了。

paste:merge lines of files
將按行將不同文件行信息放在一行。缺省情況下, p a s t e連接時,用空格或t a b鍵分隔新行中不同文本,除非指定- d選項,它將成爲域分隔符。

二 實例應用:

1、 兩個文件的交集、並集(前提條件:每個文件中不得有重複 也可以是多個文件)

(1)、取出兩個文件的並集(重複的行只保留一份)
cat file1 file2 | sort | uniq > file3 

(2)、取出兩個文件的交集(只留下同時存在於兩個文件中的文件)
cat file1 file2 | sort | uniq -d > file3

(3)、 刪除交集,留下其他的行
cat file1 file2 | sort | uniq -u > file3

2、兩個文件合併

(1)、 一個文件在上,一個文件在下
cat file1 file2 > file3

(2)、 一個文件在左,一個文件在右
paste file1 file2 > file3

3、一個文件去掉重複的行

(1)、 重複的多行記爲一行
sort file |uniq

(2)、 重複的行全部去掉
sort file |uniq -u
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章