2017-01-17 19 views
0

私のLinuxマシン上の特定のファイルをスクリプトで修正しようとしています。このファイルは/etc/pam.d/loginファイルです。問題は、ファイルの内容があるということですbashスクリプトのファイル内にコメントアウトする

# Prints the message of the day upon succesful login. 
# (Replaces the `MOTD_FILE' option in login.defs) 
# This includes a dynamically generated part from /run/motd.dynamic 
# and a static (admin-editable) part from /etc/motd. 
session optional pam_motd.so motd=/run/motd.dynamic noupdate 
session optional pam_motd.so 

そして、私は文字列に行くとき、私は結果と一致し、このファイルに第2のセッションの行をコメントアウトする必要がなく、次のようである(私はやってSEDを使用しています興味のある人のために)。

# Prints the message of the day upon succesful login. 
# (Replaces the `MOTD_FILE' option in login.defs) 
# This includes a dynamically generated part from /run/motd.dynamic 
# and a static (admin-editable) part from /etc/motd. 
#session optional pam_motd.so motd=/run/motd.dynamic noupdate 
#session optional pam_motd.so 

最初の行も条件に一致しているためです。私はどのようにして、行全体が "session optional pam_motd.so"と一致するかを確かめることができます。

ありがとうございます!

あなたの一致を制限する

答えて

1

あなたの正規表現でライン開始(^)とラインエンド($)を使用する必要があります。 Like:

sed -i '/^session optional pam_motd.so$/s/^/#/' /path/to/file 
1

使用^$アンカー:

sed 's/\(^session optional pam_motd.so$\)/#\1/' file > file.new 
関連する問題