sedで正規表現を使用する方法は?

sedで正規表現を使用する方法は?

スクリプトで sed を使用するユーザーに対する sudo アクセス権を取り消す必要があります。
行に/ bin / suが含まれている場合にのみ、ユーザーにコメントを付けたいと思います。 - root
最初の行にのみコメントを付ける必要がある次のファイルを考えてみましょう。

mindadmin  ALL = NOPASSWD: /bin/su - root
mindadmin  ALL = NOPASSWD: /bin/ifconfig

私が使用したコマンドはsed次のとおりです。

sed -e 's/minadmin[\s]+ALL[\s]+=[\s]+NOPASSWD:[\s]+/bin/su - root/#mindadmin  ALL = NOPASSWD: /bin/su - root/g' /etc/sudoers 

しかし、うまくいきません。文法的なエラーがありますか?

ベストアンサー1

2つの問題があります。最初のものはsudoershasmindadminとmode minadmin(nothing d)です。

2番目の問題は、/sの/bin/su正規表現で次をエスケープする必要があることです。

sed -e 's/mindadmin[\s]+ALL[\s]+=[\s]+NOPASSWD:[\s]+\/bin\/su - root/#mindadmin  ALL = NOPASSWD: \/bin\/su - root/g' /etc/sudoers

それ以外の場合、パターンは終了します。

代わりに別の区切り文字を選択することもできます。/ファイルにその区切り文字が表示されない限り、エスケープする必要はありません。

おすすめ記事