当前位置:  开发笔记 > 编程语言 > 正文

在bash脚本中注释掉文件中的行

如何解决《在bash脚本中注释掉文件中的行》经验,为你挑选了1个好方法。

我试图在脚本中修改我的linux机器上的某个文件.该文件是/etc/pam.d/login文件.问题是文件的内容是,

# 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

我需要注释掉这个文件中的第二个会话行,但是当我去字符串匹配时,结果如下(我正在使用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

因为第一行也符合条件.我如何确保整行与"会话可选pam_motd.so"匹配,而不仅仅是它的某个部分.

谢谢!



1> Grisha Levit..:

你需要在正则表达式中使用line start(^)和line end($).喜欢:

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

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有