Программа 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")' ФАЙЛ
Связанные статьи:
- Как добавить строку в начало или в конец каждой строчки (78%)
- Как преобразовать строку в нижний регистр в Bash (74.6%)
- Как преобразовать строку в верхний регистр в Bash (74.6%)
- Как отфильтровать текст, находящийся между двумя определёнными строками (73.6%)
- Как добавить нули до определённого размера строки (72.5%)
- Как переменной присвоить значение в несколько строк в скрипте Bash (RANDOM - 4.4%)