我有一个字符串,让我们说:
<lic><ic>This is a string</ic>, welcome to my blog.</lic>
我想使用sed来删除<ic>
和</ic>
标记,以及文字标记<lic>
和</lic>
最快的方法是什么?我对sed很新。怎么会在awk中完成? 我知道awk对于类似列的文本要好得多,所以我更倾向于学习如何使用sed。
提前感谢任何帮助!
答案 0 :(得分:3)
仅删除标签:
sed -i.old -r 's;</?l?ic>;;g' infile
答案 1 :(得分:3)
sed -e 's%</\{0,1\}l\{0,1\}ic>%%g'
\{0,1\}
是在PCRE中编写等效sed
的标准?
方式。正则表达式使用%
来分隔位;然后查找<
可能后面跟一个斜杠,可能后跟一个l
,然后是ic>
,并在每行输入中全局替换它。
sed
的某些版本允许您指定正则表达式的替代系统,但这适用于任何地方。
答案 2 :(得分:2)
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
答案 3 :(得分:1)
你的标签有一个左括号结构,后跟一些不是右括号的字符,最后是一个右括号。所以让我们这样写:
sed 's/<[^>]*>//g'