sed regex, работает с подстроками, а не со всей строкой - PullRequest
1 голос
/ 12 октября 2010

предположим, что есть следующая строка:

commandone{alpha} commandtwo{beta} {gamma}commandthree commandtwo{delta}

и я хочу получить:

commandone{alpha} beta {gamma}commandthree delta

хорошо, я использую регулярные выражения и sed, я могу легко найти, еслив нем представлен шаблон, который я ищу /commandtwo паузу.* Event/, но не стираю команду два и следующие две скобки.Можно было бы использовать только подстроки " commandtwo {beta} " и " commandtwo {delta} ", но я не знаю, возможно ли это или нет, используя sed.

Я ищу регулярное выражение для выполнения действия, которое я описал.заранее спасибо

Ответы [ 3 ]

2 голосов
/ 12 октября 2010

Это похоже на работу:

sed 's/commandtwo{\([^}]*\)}/\1/g' inputfile

Пример:

$ echo 'commandone{alpha} commandtwo{beta} {gamma}commandthree commandtwo{delta}'|sed 's/commandtwo{\([^}]*\)}/\1/g'
commandone{alpha} beta {gamma}commandthree delta
0 голосов
/ 12 октября 2010

при условии, что вы хотите удалить все ссылки на commandtwo из вашего кода (но не его аргументы), вероятно, что-то вроде /commandtwo{(.*?)}/\1

0 голосов
/ 12 октября 2010

используйте awk

$ s="commandone{alpha} commandtwo{beta} {gamma}commandthree commandtwo{delta}"
$ echo "$s" | awk '{for(i=1;i<=NF;i++) if ($i~/commandtwo/){ gsub(/commandtwo|{|}/," ",$i)} }1'
commandone{alpha}   beta  {gamma}commandthree   delta
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...