web-dev-qa-db-ja.com

行が別の文字列で始まる場合、ファイル内の文字列を置換します

行がsedを使用して別の文字列で始まる場合、ファイル内の文字列をどのように置き換えることができますか?

たとえば、次の行を置き換えます。

connection = sqlite://keystone:[YOURPASSWORD]@[YOURIP]/keystone

この行で:

connection = mysql://keystone:[email protected]/keystone
18
BlackBeret

回答:

sed '/^start_string/s/search_string/replace_string/'

http://www.gnu.org/software/sed/manual/sed.html#Addresses の情報

22
anishsane

あなたは単にこれを行うことができます:

sed -ri 's/sqlite/mysql/g' YOURFILE
4
kbekkouche

パターンで始まり、それ以外で終わる行全体を変更する場合は、コマンドcdescription の例を使用できます。

sed -i '/^connection = sqlite/c\connection = mysql://keystone:[email protected]/keystone' your_file
2
AstraSerg
sed '/^string1/ { s,string2,string3, }' file

これにより、string1で始まるすべての行でstring2がstring3に置き換えられます。

1
alinsoar