ファイル内のテキストを検索し、その後にテキストを挿入する

ファイル内のテキストを検索し、その後にテキストを挿入する

テキストファイルがあります。テキストファイルには以下の内容が含まれています。

ServerName
ServerAdmin webmaster@localhost
DocumentRoot

www.mydomain.comの後にテキスト を挿入する必要がありますServerName。これを行うコマンドはありますか?

答え1

使用方法sed:

sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

キャプチャされたグループは、\(ServerName\)置換パターンで として使用されます\1

GNU ssed、busybox、または の BSD 実装を想定して、バックアップ付きのファイルをその場で編集しますsed

sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

元のファイルは として保持されfile.bak、変更されたファイルは になりますfile.txt.bak

バックアップなしでその場で編集する (GNUssedまたはGNUbusyboxのみ):

sed -i 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

(BSD の場合は を使用しますsed -i '' 's/...)。


キャプチャされたグループなしでさらに短くします。

sed -i 's/^ServerName$/& www.mydomain.com/' file.txt

ここで&一致によって置き換えられます。

答え2

sed --in-place 's/ServerName/& www.example.com/' /path/to/apache-vhost.conf

答え3

sed substitue コマンドの使用:

sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt

関連情報