как получить подстроку, начиная с первого появления шаблона в bash - PullRequest
2 голосов
/ 28 июля 2011

Я пытаюсь получить подстроку с начала шаблона.

Я бы просто использовал cut, но это не сработало бы, если бы длина шаблона составляла несколько символов.

если бы мне нужен был один символ, разделитель, то это бы сработало:

result=`echo "test String with ( element in parenthesis ) end" | cut -d "(" -f 2-`

редактировать: образцы испытаний:

 INPUT: ("This test String is an input", "in")
 OUTPUT: "ing is an input"

 INPUT: ("This test string is an input", "in ")
 OUTPUT: ""

 INPUT: ("This test string is an input", "n")
 OUTPUT: "ng is an input"

примечание: круглые скобки означают, что входные данные принимают как строку, так и строку-разделитель.

Ответы [ 3 ]

1 голос
/ 28 июля 2011

РЕДАКТИРОВАНИЕ:

В заключение, то, что было запрошено, было способом разобрать текст из строки, начинающейся в определенной подстроке и заканчивающейся в конце строки. Как уже упоминалось, есть множество способов сделать это. Вот один ...

egrep -o "DELIM.*" input

... где 'DELIM' - искомая подстрока.

0 голосов
/ 29 июля 2011

Это можно сделать без внешних программ. Предполагая, что строка для обработки находится в $string, а разделитель - DELIM:

result=${string#"${string%%DELIM*}"}

Внутренняя часть заменяет $string всем, начиная с первого вхождения DELIM (если есть), удаленным. Затем внешняя часть удаляет это значение с начала $string, оставляя все начиная с первого вхождения DELIM или пустой строки, если DELIM не происходит. (Переменная string остается без изменений.)

0 голосов
/ 29 июля 2011

Также

awk -v delim="in" '{print substr($0, index($0, delim))}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...