使用sed保留部分模式

时间:2016-08-05 02:48:08

标签: regex sed

我使用sed删除部分字符串,但sed中使用的正则表达式与其他编程语言略有不同。 这是要处理的句子:

"{\cs6\f1\cf6\lang1024 little} G{\cs6\f1\cf6\lang1024 }EDFW, {\cs6\f1\cf6\lang1024 one two}i{\cs6\f1\cf6\lang1024 </span><span>} {\cs6\f1\cf6\lang1024 </span><span>}= {\cs6\f1\cf6\lang1024 </span><span>}G{\cs6\f1\cf6\lang1024 </span><span>}TOTW, {\cs6\f1\cf6\lang1024 </span><span>}i{\cs6\f1\cf6\lang1024 </span>}"

我想要删除像{\cs6\f1\cf6\lang1024}这样的字符串(模式如({\ sth)*(keep)})并保留空格后跟随的内容,例如<span>

我试过了:

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

输出应该如下:

little GEDFW, one twoi</span><span> </span><span>=</span><span>G</span><span>TOTW, </span><span>i</span>

但似乎&#34;。&#34;包括空间和我试图捕捉最小匹配的方式没有用。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

删除不需要的部分会更容易:

sed 's/{\\cs6\\f1\\cf6\\lang1024 *//g; s/}//g' input_file