Сед удаление после ip - PullRequest
       4

Сед удаление после ip

0 голосов
/ 03 июля 2018

У меня простой вопрос о sed.

У меня есть такие данные:

boo:moo:127.0.0.1--¹óÖÝÊ¡µçÐÅ
foo:joo:127.0.0.1 ÁÉÄþÊ¡ÉòÑôÊвʺçÍø°É

Как мне сделать это так:

boo:moo:127.0.0.1
foo:joo:127.0.0.1

Мой код Sed

sed -e 's/\.[^\.]*$//' test.txt

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Для данного примера вы можете захватить все от начала строки до последней цифры в строке

$ sed 's/\(.*[0-9]\).*/\1/' ip.txt
boo:moo:127.0.0.1
foo:joo:127.0.0.1

$ grep -o '.*[0-9]' ip.txt
boo:moo:127.0.0.1
foo:joo:127.0.0.1

Или вы можете удалить все нецифровые символы в конце строки

$ sed 's/[^0-9]*$//' ip.txt
boo:moo:127.0.0.1
foo:joo:127.0.0.1
0 голосов
/ 03 июля 2018

Вы можете найти IP-подобную подстроку и удалить все после нее:

sed -E 's/([0-9]{1,3}(\.[0-9]{1,3}){3}).*/\1/' # POSIX ERE version
sed 's/\([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}\).*/\1/'  # BRE POSIX version

Шаблон ([0-9]{1,3}(\.[0-9]{1,3}){3}) - это упрощенный шаблон регулярных выражений IP-адресов, который сопоставляет и захватывает от 1 до 3 цифр, а затем 3 вхождения точки и снова от 1 до 3 цифр, а затем .* сопоставляет и использует оставшуюся часть строки. , Заполнитель \1 в шаблоне замены вставляет захваченное значение обратно в результат.

Обратите внимание, что в паттерне BRE POSIX вы должны экранировать ( и ), чтобы сделать их конструкцией группы захвата, и вам нужно экранировать {...}, чтобы сделать его квантификатором диапазона / интервала / ограничения (он имеет много имен в литературе регулярных выражений).

См. онлайн-демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...