[英]grep not returning expected result with regex on xml
我在某些xml上運行了一個grep命令,它似乎在誤解我要使用的正則表達式。
這是命令
grep '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml
似乎正在發生的是,正則表達式的?>
方面似乎沒有匹配,而不是匹配到>
的第一次出現
有任何想法嗎?
默認情況下,grep使用基本正則表達式並考慮?
作為文字問號。 要將其視為正則表達式語法,需要轉義該字符。
grep '<ernm:NewReleaseMessage.*\?>' ./075679942012_ORIGNAL.xml
您可以使用-E
選項,該選項將模式解釋為擴展的正則表達式 。
grep -E '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml
注意:上面的代碼將返回與模式匹配的整行,如果只需要匹配的文本,請使用-o
選項,該選項僅打印匹配行的匹配部分。
grep -o '<ernm:NewReleaseMessage.*\?>' ./075679942012_ORIGNAL.xml
要么
grep -Eo '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml
如果您想使文本最多出現在>
字符的前面,請嘗試以下命令,
grep -o '<ernm:NewReleaseMessage[^>]*>' file
如果要整行,請刪除-o
參數。
例:
$ cat aa1.txt
<ernm:NewReleaseMessage blah> foo bar>
$ grep -o '<ernm:NewReleaseMessage[^>]*>' aa1.txt
<ernm:NewReleaseMessage blah>
帶-o
grep
僅輸出匹配的文本。
[^>]*
-不>
零的字符。 因此,它最多匹配首次出現的>
字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.