sedは残りの行の削除を防ぎます

sedは残りの行の削除を防ぎます

何かを変更したい行を含むファイルがあります。

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で。

おすすめ記事