如何在2 xml标签之间提取字符串?

时间:2017-05-18 08:29:05

标签: linux bash awk sed ash

我有一个像这样的字符串

<anytag>my message</anytag>

如何使用sed或awk在标签之间提取消息? 所以我只得到"my message"

5 个答案:

答案 0 :(得分:1)

sed 's/<.*>\(.*\)<\/.*>/\1/g' file

答案 1 :(得分:1)

尝试:

awk -F'[><]' '{print $3}'   Input_file

将字段分隔符设为'[&gt;&lt;]'并打印第3个字段。

答案 2 :(得分:0)

使用xmllint (来自libxml2)

xmllint --xpath '//anytag/text()' <(echo "<anytag>my message</anytag>")

答案 3 :(得分:0)

  

我不想为精简提取字符串my xml安装xml paser   消息并不复杂

对于简单字符串,您可以使用以下 sed 方法:

s="<anytag>my message</anytag>"
sed 's~<[^<>]*>\([^<>]*\)</[^<>]*>~\1~' <<< $s

输出:

my message

答案 4 :(得分:0)

如果文件的每一行都是您显示的格式,则可以使用以下awk命令。

awk -F "<[^<]+?>" '{print $2;}' <filename>

输入:

<anytag>my message</anytag> <mytag>abc</mytag>

输出:

my message
abc