zaLinux.ru

Как сделать замену от совпадения до конца строки


Программа sed и некоторые другие программы могут искать совпадения и делать замены. В большинстве случаев нужно найденную подстроку заменить на другую подстроку или удалить вовсе.

Пример команды sed, которая ищет подстроку и заменяет на указанную:

echo 123456789 | sed 's/6789/4321/'

Предыдущая команда выведет: 123454321

Если нужно удалить найденную подстроку, то вместо строки для замены нужно указать пустую строку.

Предположим другой случай, когда начиная от совпадения и до конца строки нужно нужно вставить замену.

Допустим, имеется файл:

   one  two  three  five
   four two  five five six
   six  one  two seven four

И нужно сделать так, чтобы часть от каждого слова "two" до конца строки заменялась словом "BLAH", который бы заканчивал вывод. То есть из исходного файла должно получиться:


   one BLAH
   four BLAH
   six one BLAH

Это можно сделать с помощью команды sed следующего вида:

sed 's/two.*/BLAH/'

Пример:

echo "    one  two  three  five
    four two  five five six
    six  one  two seven four" | sed 's/two.*/BLAH/'

Выведет:

    one  BLAH
    four BLAH
    six  one  BLAH

Аналогичный пример на awk:

awk '{gsub(/two.*/,"BLAH")}1' ФАЙЛ

И на Ruby:

ruby -ne 'print $_.gsub(/two.*/,"BLAH")' ФАЙЛ


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *