次の行を含むテキストファイルをプログラムで編集しようとしています。
db.username="tata"
db.password="toto"
私はそれが次のように見えるようにしたいです:
db.username="fofo"
db.password="bar"
正規表現は次のとおりです。
^\s*db.username="([^"]*)
このコマンドを使用しようとすると
sed -i -E '^\s*db.username="([^"]*)' 'fofo' file.txt
エラーが発生します。
sed: -e expression #1, char 1: unknown command: `^'
答え1
grep
正規表現と置換を混ぜていますsed
。
次のいずれかを使用してください。
sed -e '/db\.username/s/"[^"]*"/"foo"/' txt
db.username="foo"
db.password="toto"
どこ
/db\.username/
sedにdb.usernameをオンラインで操作するように指示します(.
sedの特殊文字)。s
変える"[^"]*"
引用文1個、引用文ではなく複数の引用文、引用文1個"foo"
/db.username/
一致しますdb_username
、dbXusername
....
または
sed -e 's/db\.username="[^"]*"/db.username="foo"/' txt
db.username="foo"
db.password="toto"
より詳細に説明するためにsed
パターンをキャプチャできます。
sed -e 's/db\.username="\([^"]*\)"/usename is \1/' txt
usename is tata
db.password="toto"
\( \)
テキストキャプチャ\1
最初にキャプチャしたテキストの使用
grep
いいね
grep -Eo '"[^"]*"' txt
"tata"
"toto"