从XML文件中提取文件名(不带扩展名)

时间:2010-08-18 18:17:25

标签: xml bash sed awk

当我grep for“Server”时,我有以下XML输出:

<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

4 个答案:

答案 0 :(得分:2)

对于示例输入数据,以下sed脚本将起作用:

sed -e 's/.*\/\(.*\)\.xml.*/\1/g' t.tmp

.*\/匹配正斜杠(贪婪)。然后\(.*\)\.xml匹配该行的最后一行并获取组中的基本文件名。 \1告诉它将所有内容替换为组中的内容。

答案 1 :(得分:1)

使用awk和sed很简单,假设数据在“test.data”文件中:

cat test.data | awk 'BEGIN{FS="/"}{print $5}'  | sed 's/\..*//g'

答案 2 :(得分:0)

在没有无用的猫和sed的情况下,可以简化接受的答案,

awk '{gsub(/\..*/,"",$5) ;print $5}' file

答案 3 :(得分:0)

>gawk -F"/" "{ split($5,a,\".\"); print a[1]}" 1.t
PRX01
PRX02
PRX03
PRX04