我想在 pam.d 目录中存在的 sshd 文件中的匹配行之后插入一行。
例如它应该搜索这一行
account required pam_nologin.so
它应该插入一行
account required pam_access.so
就在它的下面,单词之间有适当的行距。
我是 sed 和 awk 的新手,所以任何帮助将不胜感激。
答案1
这应该可以工作(从标准输入读取,打印到标准输出以进行测试):
sed -e '/^account required pam_nologin\.so$/a account required pam_access.so'
该a
命令将A将文本附加到匹配行,匹配行是由“account required pam_nologin.so”组成的行。
如果您想使用该-i
开关(就地编辑文件),我强烈建议使用-i .bak
或类似的方法来保留原始文件的备份:
sed -i .bak -e '/^account required pam_nologin\.so$/a account required pam_access.so' /etc/pam.d/sshd
答案2
使用好旧的ed
:
ed /etc/pam.d/sshd << EOT
/account required pam_nologin.so/
a
account required pam_access.so
.
w
EOT
地址/account required pam_nologin.so/
为一行。
该a
命令用于将文本附加到编辑器缓冲区。
文本account required pam_access.so
被输入到缓冲区中。
.
返回命令模式。
w
将缓冲区写出到文件。