Bash
不需要整行,只需要正則表達式的匹配
我只需要從正則表達式中獲取匹配項:
$ cat myfile.txt | SOMETHING_HERE "/(\w).+/"
輸出只能是括號內匹配的內容。
不要認為我可以使用grep因為它匹配整行。
請讓我知道如何做到這一點。
2件事:
- 正如@Rory 所說,您需要該
-o
選項,因此只列印匹配項(而不是整行)- 此外,您需要
-P
選擇使用 Perl 正則表達式,其中包括有用的元素,如Look ahead(?= )
和Look behind(?<= )
,它們查找部分,但實際上並不匹配和列印它們。如果您只想匹配括號內的部分,請執行以下操作:
grep -oP '(?<=\/\()\w(?=\).+\/)' myfile.txt
如果文件包含 sting
/(a)5667/
,則 grep 將列印 ‘a’,因為:
/(
被 找到\/\(
,但由於它們處於後視狀態,(?<= )
因此未報告a
被匹配\w
並因此被列印(因為-o
))5667/
由 找到\).+\/
,但由於它們處於前瞻(?= )
中,因此未報告