当我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
答案 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