sed 将路径附加到特定行模式搜索的末尾

sed 将路径附加到特定行模式搜索的末尾

想要使用搜索模式将路径变量附加到特定行的行尾并附加,“默认安全路径”我想附加的字符串::/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

相关内容