IPアドレスと日付を含む次の文字列があります。セキュリティ上の理由から、IPアドレスの最初の2桁を隠す必要があります。
text 200.200.10.2 2022.05.07 15:32:43 other texts
次のコマンドを実行しましたが、交換さ2022.05.07
れました。
echo "text 200.200.10.2 2022.05.07 15:32:43 other texts"|sed -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\./IP./g'
text IP.10.2 2IP.07 15:32:43 other texts
私は変更したいだけです200.200.10.2
。
ベストアンサー1
このg
フラグは、「この行の文字列内のすべての項目を置き換えます」を意味します。最初の項目のみを置き換えるには、以下を削除してくださいg
。
$ echo "text 200.200.10.2 2022.05.07 15:32:43 other texts" |
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\./IP./'
text IP.10.2 2022.05.07 15:32:43 other texts
もちろん、詳細は実行したい操作によって異なります。上記のコマンドも999.999.whatever
置換されているため、IP.whatever
正確に4つの数値セットがある場合にのみこれを実行したい場合があります。
$ echo "1.2.3 text 200.200.10.2 2022.05.07 15:32:43 other texts" |
sed -E 's/([0-9]{1,3}\.){2}([0-9]{1,3}\.[0-9]{1,3})/IP.\2/'
1.2.3 text IP.10.2 2022.05.07 15:32:43 other texts
しかし、これも一致します1.12.123.1234567890
。したがって、スペースまたは行末が続く最後の数字のセットだけを一致させたい場合があります。
$ echo "1.2.3 text 200.200.10.2 2022.05.07 15:32:43 other texts" |
sed -E 's/([0-9]{1,3}\.){2}([0-9]{1,3}\.[0-9]{1,3}([[:blank:]]|$))/IP./'
1.2.3 text IP. 2022.05.07 15:32:43 other texts