Linux 中如何解析获取文件中XML标签对中的值

举例:文件内容:sdfs<abc>hehehe</abc>sdf,如何获取字符串“hehehe”;或者获取字符串“<abc>hehehe</abc>”(不展示首尾的其他字... 举例:文件内容:sdfs<abc>hehehe</abc>sdf,如何获取字符串“hehehe”;
或者获取字符串“<abc>hehehe</abc>”(不展示首尾的其他字符串)
试过用awk,awk -F: '/<abc>.*<\/abc>/' 文件名 ,但是只能得到所在行,不能得到指定字符串,请各位大拿帮忙,谢谢!
展开
 我来答
百度网友96ffcf7
推荐于2018-05-10 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118724
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
如果获取到节点话,就调用attributeValue(String name)方法获取里面的值就好了。
$cat test.sh
#!/bin/bash
if [ -z $1 ];then
echo 'USAGE:COMMAND FILENAME'
exit 0
fi
filename=record.txt
HOST=(`sed -n 's/.*>\(.*\)<\/host>/\1/p' $1`)
OIDG=(`sed -n 's/.*>\(.*\)<\/oidgroupname>/\1/p' $1`)
COMM=(`sed -n 's/.*>\(.*\)<\/communitystring>/\1/p' $1`)
DESC=(`sed -n 's/.*>\(.*\)<\/description>/\1/p' $1`)
FILE=(`ls -l $filename >/dev/null 2>&1 | awk '{print $8}'`)
if [ ! -z $FILE ];then
echo -e "host\t\toidgroupname\t\tcomm\t\tdesc" >$filename
fi
for((i=0;i<${#HOST[@]};i++));do
echo -e "${HOST[i]}\t${OIDG[i]}\t${COMM[i]}\t\t${DESC[i]}" >>$filename
done

$./test.sh file
$cat record.txt
host oidgroupname comm desc
192.168.1.1 CpuUtilization_MF public 192.168.1.1_CPUUtilizaton
192.168.1.2 CpuUtilization_MF public 192.168.1.2_CPUUtilizaton
192.168.1.3 CpuUtilization_MF public 192.168.1.3_CPUUtilizaton
192.168.1.4 CpuUtilization_MF public 192.168.1.4_CPUUtilizaton
192.168.1.5 CpuUtilization_MF public 192.168.1.5_CPUUtilizaton
百度网友5311d79
推荐于2016-05-29 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3201万
展开全部
sed -nr '/<abc>.*<\/abc>/s_.*<abc>([^<]*)</abc>.*_\1_p' 文件名


s_A_B_

将A替换为B

B中 \1 即代表A中第一个小括号里的内容。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式