輸入是#PermitRootLogin no。為什么以下 sed 運算式不適用于 sed?
echo "#PermitRootLogin no" | sed 's/^#PermitRootLogin\s .*/PermitRootLogin yes/'
但是在我洗掉關鍵字后的 之后它會起作用嗎?
echo "#PermitRootLogin no" | sed 's/^#PermitRootLogin\s.*/PermitRootLogin yes/'
我認為\s之后的 表示一個或多個先前的標記。
要點
PS:無論哪種方式與 regex101.com 一起作業
uj5u.com熱心網友回復:
你必須逃避 標志:
在 GNU sed 中,使用基本的正則運算式語法,這些字符?, , parentheses, braces({})和| 沒有特殊含義,除非以反斜杠為前綴\。
加號 在你的情況下意味著匹配一個文字 ,所以它會匹配加號#PermitRootLogin no。您必須將其轉義\s\ 才能匹配一個或多個空白字符#PermitRootLogin no
echo "#PermitRootLogin no" | sed 's/^#PermitRootLogin\s\ .*/PermitRootLogin yes/'
輸出:
PermitRootLogin yes
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533759.html
標籤:正则表达式sed
上一篇:使用正則運算式從字串中提取鍵值對
