Grep
如何使用 grep 搜尋模式?
我想搜尋一個文件來檢查這樣的模式:
text1,text2,[1.2.3,3.4.5,6.7.8,etc]
存在。方括號內的逗號數量未定義。我嘗試了以下命令,但它在之後列印逗號
text1
,text2
這不是我想要的。我只想在方括號內查找逗號。$ grep -E '[*,*]' myfile.txt
編輯#1
這是一些範例輸入。請注意,括號內的逗號可以大於或小於範例中的數字(即未定義的數字,因此我必須使用正則表達式擷取它們):
1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8'] 2.com,3.4.5.6,txt2,txt21,['5.6.6.6'] 3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']
要匹配在方括號內至少包含一個逗號的行,您可以使用
grep '\[.*,.*\]'
前任。
$ grep '\[.*,.*\]' file 1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8'] 3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']
方括號需要轉義,因為它們在正則表達式語法中具有特殊含義。注意我不需要使用
-E
withgrep
,基本的模式匹配工具grep
就足夠了。注意:
grep
通常會將匹配顯示為彩色,這樣您就可以知道您使用的任何模式實際匹配的內容: