考慮一個名為.env包含的檔案:
env1=foo
env2=bar
我使用帶有正則運算式的 grep 來確認有一行定義env2為非空值,期望得到匹配。
~$ grep -c -i '^env2=(?!\s*$). ' .env
0
回傳 0 個匹配項...但是為什么呢?當我在這里測驗相同的東西時,我得到了匹配:https ://regexr.com/6g7of
完整性檢查:
~$ grep -c -i '^env2=bar' .env
1
如果我有疑問,請確認支持多行。
uj5u.com熱心網友回復:
您的^env2=(?!\s*$). 正則運算式是符合 PCRE 的正則運算式,但您使用grep的是默認的 POSIX BRE 正則運算式引擎。
如果您使用 GNU grep,則可以使用該-P選項grep將模式視為 PCRE 正則運算式:
grep -cPi '^env2=(?!\s*$). ' .env
否則,使用符合 POSIX 的模式,`
grep -c -i '^env2=.*[^[:space:]]' .env
在這里,正則運算式匹配
^- 字串的開始env2=- 文字文本.*- 零個或多個字符[^[:space:]]- 一個非空白字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/432864.html
上一篇:使用bash在包含模式的java檔案中查找行,然后替換該行的另一部分
下一篇:C作為外部程式啟動守護行程?
