用 sed 删除字符串的给定部分?

用 sed 删除字符串的给定部分?
$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>'
<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>
$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>' | sed 's/SOMEMAGIC/NA/g'
NA

我的问题:如何使用 SOMEMAGIC 删除“echo”中的字符串?分隔符可以是 > 我认为

答案1

<a href>xx</a>我认为您正在尝试提取标签内的值。如果是,那么你的命令应该是这样的,

GNU sed:

sed -r 's/^<a [^>]*>([^<]*)<.*$/\1/g' file

传统的 sed:

sed 's/^<a [^>]*>\([^<]*\)<.*$/\1/g' file

例子:

$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>' | sed -r 's/^<a [^>]*>([^<]*)<.*$/\1/g'
NA

$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>' | sed 's/^<a [^>]*>\([^<]*\)<.*$/\1/g'
NA

$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">fooooooooooooooobaaaaaaaaaar</a>' | sed 's/^<a [^>]*>\([^<]*\)<.*$/\1/g'
fooooooooooooooobaaaaaaaaaar

相关内容