скрипт bash заменяет только совпадение и запускает специальный IP-адрес?

#regex #sed

Вопрос:

Не могли бы вы, пожалуйста, помочь мне написать сценарий? мне нужно использовать только начальный и соответствующий IP-адрес. например

 Y8.78.94 488752   X1.188 36582   62.111.101.260 #S 
Y8.62.111 5789544 X1.132 5364789 8.8.4.4 #S  
 

но когда я использую эту команду

 > sed -i 's/62.111./Z./g' test.txt
 

Но в результате все меняется вроде как:

 Y8.78.94 488752   X1.188 36582   Z.101.260 #S 
Y8.Z. 5789544 X1.132 5364789 8.8.4.4 #S 
 

Y8.Z. это неправильно, мы не должны этого менять

Ответ №1:

В регулярном выражении . соответствует любому символу. Итак 62.111. , совпадения 62.111 , за которыми следует пробел в начале.

Вы должны соответствовать . буквальному, избегая его.

 sed -i 's/62.111./Z./g' test.txt