想要使用搜索模式将路径变量附加到特定行的行尾并附加,“默认安全路径”我想附加的字符串::/etc/bla/foo/
文件,
文件名
# asdf
# lkaj
# asdah
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda
尝试过模式搜索“默认安全路径”并附加到行尾:
sed '/^Defaults secure_path = / s/$/ :/etc/bla/foo/' filename
但是,出现错误:
sed -e expression #1, char 38: unknown option to `s'
答案1
您可以使用 awk 命令并附加它。
bash-4.1$ cat filename
# asdf
# lkaj
# asdah
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda
bash-4.1$
bash-4.1$ awk '$0~/Defaults.*secure_path/{$0=$0":/etc/bla/foo/"}1' filename
# asdf
# lkaj
# asdah
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/etc/bla/foo/
## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda
此 awk 命令搜索模式“Defaults”并将值附加到行尾。
使用sed命令
bash-4.1$ sed "s?\(Defaults.*secure_path.*\)?\1:/etc/bla/foo/?" filename
# asdf
# lkaj
# asdah
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/etc/bla/foo/
## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda