подстановочный знак sed заменяет - PullRequest
0 голосов
/ 30 апреля 2011

Я использую sed в Centos, bash.

Я хочу заменить все между \ plain и}} пробелом в строке ниже:

stuff here \plain \f2\fs20\cf2 4:21-23}} more stuff over here, could be anything.

Текст между \ plain и}} будет различаться (разные цифры / цифры).Как сделать подстановочный знак, чтобы включить все между \ plain и}}.

Я надеялся, что простой * перехватит все между двумя, но подстановочный знак в оболочке, похоже, не работает так:*

s/\\plain *}}/ /g;

Ответ может быть что-то, включающее это?[a-zA-Z0-9.], но это не учитывает обратную косую черту, двоеточие и тире в тексте.

Ответы [ 2 ]

3 голосов
/ 30 апреля 2011

Просто добавьте точку перед *, чтобы соответствовать всему.

т.е. s/\\plain .*}}/ /g должно работать.

1 голос
/ 30 апреля 2011

Следующее регулярное выражение ...

^\\plain .*}}$

... будет соответствовать строкам, начинающимся с \plain, имеющим что-либо посередине и заканчивающимся }}.

Если это бесполезно, вместо .*, чтобы сопоставить все, используйте ^ (отрицание), чтобы сопоставить все, что не }}.

...