一、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-hk/n/369177.html