我有一个字符串,可以说:
<lic><ic>This is a string</ic>, welcome to my blog.</lic>
我想使用 sed 摆脱<ic>
and</ic>
标签,以及文字标签<lic>
和</lic>
最快的方法是什么?我对 sed 很陌生。这将如何在 awk 中完成?我知道 awk 对于类似列的文本要好得多,所以我更倾向于学习如何使用 sed。
任何帮助总是很感激,在此先感谢!
仅删除标签:
sed -i.old -r 's;</?l?ic>;;g' infile
sed -e 's%</\{0,1\}l\{0,1\}ic>%%g'
这是在 PCRE中编写等价物\{0,1\}
的标准方式。正则表达式用于分隔位;然后在每行输入中全局查找可能后跟一个斜线,可能后跟一个,然后将其替换为空。sed
?
%
<
l
ic>
某些版本sed
允许您指定正则表达式的替代系统,但这适用于任何地方。
sed
不需要很复杂。这里有两种简单的方法来做你想做的事。
这匹配那些确切的模式并在全局范围内删除它们:
sed -e "s%\(<lic>\|</lic>\|<ic>\|</ic>\)%%g" file.txt
请记住,sed
如果需要,您可以使用以下方法设置多个表达式:
sed -e "s%<lic>%%" -e "s%</lic>%%" -e "s%<ic>%%" -e "s%</ic>%%" file.txt
您的标签具有左括号结构,后跟许多不是右括号的字符,最后是右括号。所以让我们这样写:
sed 's/<[^>]*>//g'