我有一個包含以下順序的模塊和查詢的日志檔案:
com.ab
com.ab
com.ac
com.ad
com.ab
com.ac
com.ad
因此我使用以下 grep 命令洗掉重復項:
grep -m1 'com.a' filename
但它沒有給出正確的輸出,因為我希望輸出能夠洗掉重復項并找到不同的模式:
com.ab
com.ac
com.ad
我如何使用 grep 實作上述輸出
uj5u.com熱心網友回復:
您可以使用
grep -F 'com.a' file | sort -u
awk '/com\.a/' file | sort -u
awk 'index($0, "com.a")' file | sort -u
awk 'index($0, "com.a") && !seen[$0] ' file
在這里,grep -F 'com.a' file搜索固定com.a文本file(使用正則運算式搜索每一行awk的com.a子字串com\.a,index($0, "com.a")版本搜索com.a作為文字字串)并對sort -u輸出進行排序并回傳唯一值。
該awk 'index($0, "com.a") && !seen[$0] ' file解決方案可能是最好的,一切都在一個單一的做awk,看到了在線演示。僅列印包含com.a子字串的那些唯一行。
uj5u.com熱心網友回復:
讓我向你展示我最喜歡的:
| sort | uniq
當你把它放在某個串列之后(比如cat filename),你只會得到不同的值,重復的值會被洗掉。
我使用它的原因是靈活性:您可以輕松地向排序添加一個標準,例如sort -k3 -n,如果需要,您可以計算重復的數量,-c在uniq命令中添加,這些可能全部組合成| sort -k3 -n | uniq -c,其中首先根據第三列對您的串列進行排序,以數字方式進行排序,然后顯示并計算重復項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/338734.html
上一篇:使用awk計算示例檔案的字數
