Grep

如何使用 grep 搜尋模式?

  • August 12, 2018

我想搜尋一個文件來檢查這樣的模式: text1,text2,[1.2.3,3.4.5,6.7.8,etc]存在。方括號內的逗號數量未定義。

我嘗試了以下命令,但它在之後列印逗號text1text2這不是我想要的。我只想在方括號內查找逗號。

$ 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']

方括號需要轉義,因為它們在正則表達式語法中具有特殊含義。注意我不需要使用-Ewith grep,基本的模式匹配工具grep就足夠了。

注意: grep通常會將匹配顯示為彩色,這樣您就可以知道您使用的任何模式實際匹配的內容:

   ss1

引用自:https://unix.stackexchange.com/questions/462128