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

関連情報