-2
我想使用bash腳本取消註釋行。通常我使用一個Perl命令替換文本,但在這種情況下,這並不工作:提前腳本中的取消註釋行
perl -pi -e "s[# %wheel ALL=(ALL) NOPASSWD: ALL][%wheel ALL=(ALL) NOPASSWD: ALL]g" /mnt/etc/sudoers
感謝。
我想使用bash腳本取消註釋行。通常我使用一個Perl命令替換文本,但在這種情況下,這並不工作:提前腳本中的取消註釋行
perl -pi -e "s[# %wheel ALL=(ALL) NOPASSWD: ALL][%wheel ALL=(ALL) NOPASSWD: ALL]g" /mnt/etc/sudoers
感謝。
(
and )
是正則表達式的元字符,它們有特殊的含義; they mean to capture what's inside it。
/# %wheel ALL=(ALL) NOPASSWD: ALL/
將不匹配# %wheel ALL=(ALL) NOPASSWD: ALL
。它將匹配# %wheel ALL=ALL NOPASSWD: ALL
(注意缺少parens)並在$1
中捕獲ALL
。
您可以逃脫任何特殊的元字符與\
像/# %wheel ALL=\(ALL\) NOPASSWD: ALL/
或者你可以聲明,一切要\Q
和\E
之間字面理解。 /\Q# %wheel ALL=(ALL) NOPASSWD: ALL\E/
「它沒有工作」不是一個很好的問題描述。 –