我有一个xml文件,我想从文件中的字符串中只提取数值。我想出的解决方案之一是
cat file.xml |grep -i "mu "| grep -o '[0-9]'
但我得到每个数字用新行分隔,例如100,我得到1然后是新行,然后是0等等。我想出的另一个解决方案是
cat file.xml |grep -i "mu "|cut -d ' ' -f 4| tr '=' ' '|cut -d ' ' -f2|tr '""' ' '|sed -e 's/^ *//g' -e 's/ *$//g'
我的问题:这个问题是否有一个更简单的解决方案,我从一行中得到一个数字值而不关心字段而不使用cut
或tr
命令?
答案 0 :(得分:4)
使用此egrep:
egrep -o '[0-9]+'
答案 1 :(得分:0)
您拥有的一个选项是删除输入中不是数字的所有内容
tr -cd '[:digit:]'
或浮动数字
tr -cd '[:digit:].'
答案 2 :(得分:0)
我个人鼓励避免使用XML作为格式;至少为你自己使用。您可以使用以下内容代替“< mu value =”100“/>” -
# Name your data file ma-me-mo-mu.txt
100+200+300+400
然后: -
while IFS='+' read ma me mo mu
do
echo "${ma}"
echo "${me}"
echo "${mo}"
echo "${mu}"
done
您无需在数据文件本身内命名列。它们以文件名命名。