提取文件名(不含扩展名)
问题描述:
我有以下XML输出,当我用grep“服务器”:提取文件名(不含扩展名)
<Server id="1" src="/other/Server/PRX01/PRX01.xml"/>
<Server id="2" src="/other/Server/PRX01/PRX02.xml"/>
<Server id="3" src="/other/Server/PRX01/PRX03.xml"/>
<Server id="4" src="/other/Server/PRX01/PRX04.xml"/>
我需要能够借此输出和SED/AWK或一些其他工具,只需获取文件名,不需要路径或扩展名。所以,我的输出将需要(在这个例子中):
PRX01
PRX02
PRX03
PRX04
答
简单使用awk和sed做,假设数据是在文件“test.data”:
cat test.data | awk 'BEGIN{FS="/"}{print $5}' | sed 's/\..*//g'
+0
正是我需要的 - 谢谢! :) – drewrockshard 2010-08-18 20:10:31
答
对于例如输入数据,以下sed脚本将工作:
sed -e 's/.*\/\(.*\)\.xml.*/\1/g' t.tmp
的.*\/
比赛长达一个斜杠(贪婪)。然后\(.*\)\.xml
与该行的最后一个匹配,并抓取组中的基本文件名。 \1
告诉它用它代替组中的所有内容。
答
接受的答案可以在没有无用的猫被简化和sed,
awk '{gsub(/\..*/,"",$5) ;print $5}' file
答
>gawk -F"/" "{ split($5,a,\".\"); print a[1]}" 1.t
PRX01
PRX02
PRX03
PRX04
如果源是一个XML文件,关于使用XSLT/XPath的是什么?你在做什么操作系统? – AlG 2010-08-18 18:22:51