何かを変更したい行を含むファイルがあります。
database.url=jdbc:mysql://my.sql.ip.address:mySqlPort/mySqlDbName?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
IPアドレスを変更したいとしましょう。次のsed
コマンドを使用しました。
sed -i -r 's/(database.url=jdbc:mysql:\/\/).+(:.+)/\1zizi/' myFile
この出力は次のようになります。
database.url=jdbc:mysql://zizi
しかし、私は欲しい:
database.url=jdbc:mysql://zizi:mySqlPort/mySqlDbName?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
私のものはどのように書くべきですかsed
?これをうまく実行するために使用できる他のコマンドはありますか?
ベストアンサー1
2番目の次のキャプチャグループを印刷します\2
(あなたのグループを変更したり改善したりしませんsed
)
sed -i -r 's/(database.url=jdbc:mysql:\/\/).+(:.+)/\1zizi\2/' myFile
IPマッチング部分のみを変更する改善された命令です。
sed 's/[1-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/NEWIP/' infile.txt
次の行にのみ適用される場合database.url
:
sed '/^database\.url/ s/[1-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/NEWIP/' infile.txt
またはより有能またはsed
短いです。
sed 's/\([1-9]\)\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}/NEW/'
これは、一致ではなく正確なIPアドレスと一致するように変更および改善することもできます。1.1.1.999
無効なIPで。