grep去重

一、grep去重複

grep是文本搜索工具,可以用來查找文本行中是否包含指定的字元串。 如果要查找的文本文件很大,可能會出現許多重複的行。 此時,可以使用grep去重功能來刪除重複項。

下面是一個示例文件example.txt,它包含多個內容相同的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.

使用以下命令可以刪除example.txt中的重複行:

$ sort example.txt | uniq
This is a sample text file.
It contains some text.

sort命令將文件中的所有行排序,這樣任何內容相同的行都會被排在一起,之後uniq命令會將重複行去除。

二、grep多重過濾

除了去重,grep還可以用於多重過濾。 當需要匹配兩個條件或更多時,可以使用-e選項。

下面是一個示例文件example.txt,它包含多個包含「text」和「file」的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample html file.
It contains some code.

使用以下命令可以返回包含「text」和「file」這兩個關鍵字的行:

$ grep -e 'text' -e 'file' example.txt
This is a sample text file.
This is a sample html file.

grep -e選項允許我們同時指定多個匹配模式。

三、grep去重複項

與上述-sort | uniq命令不同,還可以使用awk命令實現去除文本文件中的重複行。

下面是一個示例文件example.txt,它包含多個內容相同的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.

使用以下命令可以刪除example.txt中的重複行:

$ awk '!a[$0]++' example.txt
This is a sample text file.
It contains some text.

構建一個數組a來存儲文件中的每一行,如果之前沒有遇到過這行,此行被列印出來並在數組a中添加標記,否則則不被列印出來。

四、linux grep 去重

除了awk命令外,還可以使用unix命令去除文件中的重複行。

下面是一個示例文件example.txt,它包含多個內容相同的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.

使用以下命令可以刪除example.txt中的重複行:

$ cat example.txt | sort | uniq
This is a sample text file.
It contains some text.

cat命令讀取文件,sort命令按字母順序對文件進行排序,uniq命令刪除重複的行。

五、grep e

grep命令使用-e選項來指定多個匹配模式。 還可以使用正則表達式擴展選項來進一步擴展搜索功能。

下面是一個示例文件example.txt,它包含多個包含「text」和「file」的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample html file.
It contains some code.

使用以下命令可以返回包含「text」或「file」這兩個關鍵字的行:

$ grep -E 'text|file' example.txt
This is a sample text file.
It contains some text.
This is a sample html file.

grep -E選項啟用正則表達式,並允許我們使用管道字元「|」來匹配多個模式。

六、grep查重

grep除了可以去重以外,還可以用來查找重複行。

下面是一個示例文件example.txt,它包含多個內容相同的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.

使用以下命令可以查找example.txt中的重複行:

$ sort example.txt | uniq -d
This is a sample text file.
It contains some text.

sort命令將文件中的所有行排序,-d選項告訴uniq只列印重複的行。

七、grep結果去重

有時,我們需要在處理文本數據時,去除重複的結果行。

下面是一個示例文件example.txt,它包含多個包含ip地址的行。

$ cat example.txt
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.1

使用以下命令可以在保留每個IP地址的同時去除重複結果:

$ grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' example.txt | sort | uniq
192.168.1.1
192.168.1.2
192.168.1.3

grep命令使用-o選項只列印匹配的字元串,-E選項啟用正則表達式,以查找IP地址。 sort命令和uniq命令一起使用可以去除重複結果。

八、grep怎麼用

grep命令的基本語法是:

$ grep  

可以使用以下選項進一步擴展搜索功能:

  • -i:在搜索時忽略大小寫。
  • -w:搜索整個單詞而不是匹配到的字元。
  • -v:僅列印沒有匹配的行。
  • -c:僅列印匹配模式的行數。
  • -n:每個匹配模式的行前面添加行號。

例如,要查找文件example.txt中包含「text」單詞的行,並將它們的行號顯示出來,可以使用以下命令:

$ grep -win 'text' example.txt

grep -w選項使搜索只匹配完整單詞,-i選項忽略大小寫,-n選項在每行前面加上行號。

九、grep命令去重

gre命令的另一個常見用途是去除文本文件中的重複行。

下面是一個示例文件example.txt,它包含多個內容相同的行。

$ cat example.txt
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.
This is a sample text file.
It contains some text.

使用以下命令可以刪除example.txt中的重複行:

$ grep -v '^$' example.txt | sort | uniq
This is a sample text file.
It contains some text.

grep -v選項使用^$模式匹配所有空行,並將它們刪除。 sort命令將文件中的所有行排序,uniq命令刪除重複的行。

如上所述,grep命令不僅可以搜索文本文件中的數據,還可用於去重及多重過濾。它是一種靈活的工具,對於那些需要大量處理文本數據的開發者而言,學習和使用該命令可將效率得以極大提高。

原創文章,作者:MPWFU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369177.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
MPWFU的頭像MPWFU
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相關推薦

  • Grep 精準匹配:探究匹配原理和常見應用

    一、什麼是 Grep 精準匹配 Grep 是一款在 Linux 系統下常用的文本搜索和處理工具,精準匹配是它最常用的一個功能。Grep 精準匹配是指在一個文本文件中查找與指定模式完…

    編程 2025-04-25
  • 深入理解grep正則表達式

    一、grep的基本用法 grep命令是Linux系統中最常用的命令之一,它可以在文件中查找特定的文本模式,非常方便。grep命令的基本用法: grep ‘pattern’ file…

    編程 2025-04-24
  • grep 上下幾行

    一、grep上下文的概念 grep是一款強大的命令行工具,用於在文本中查找匹配的模式。grep上下幾行指的是在匹配到的行的上方和下方輸出若干行文本,以提供上下文幫助我們更好地理解匹…

    編程 2025-04-23
  • grep過濾的多方面應用

    一、 grep過濾空行 在文本中,有時候會出現連續的空行,這樣就會很難看,因此需要一種方法來刪除這些空行,這時候就可以使用grep過濾空行。 grep -v ‘^$’ filena…

    編程 2025-04-22
  • 了解grep上下10行的用法和優勢

    一、grep上下10行的定義和基本用法 grep命令是Linux或Unix系統中常用的文本搜索工具,它可搜索任何與正則表達式匹配的文本行,並將結果輸出到控制台。而grep上下文選項…

    編程 2025-04-12
  • Grep查找指定字元

    一、正則表達式 在使用grep查找指定字元時,我們可以使用正則表達式來指定查找的規則。 例如,我們可以使用grep命令查找文件中包含所有以字母a開頭的單詞: grep ‘\ba\w…

    編程 2025-02-17
  • grep顯示行號

    一、grep顯示最後一行 grep -n “keyword” file | tail -n 1 在使用grep命令查找關鍵字時,有時候只需要知道該關鍵字最後一次出現的行號,可以使用…

    編程 2025-02-01
  • Linux運維常用grep正則表達式

    一、grep介紹 Linux中的grep是一個非常常用的工具,它可以在文本文件中查找匹配到某個模式的行,並將結果輸出到標準輸出設備。grep支持使用基本正則表達式和擴展正則表達式進…

    編程 2025-01-16
  • 全能工程師必備工具-Grep-i

    一、Grep-i簡介 Grep i是一種基於正則表達式的文本搜索工具,用於在文本文件中查找與指定模式匹配的文本行。它有一個簡單的用戶界面,可以輕鬆地按模式搜索,也可以搜索多個文件和…

    編程 2025-01-14
  • 在Linux中使用grep查找文件內容

    一、grep命令介紹 grep命令是Linux中常用的文本搜索工具,可以搜索指定文件中的制定內容,並返回匹配的字元串,grep支持基本正則表達式和擴展正則表達式兩種搜索方式。 使用…

    編程 2025-01-07

發表回復

登錄後才能評論