2010-08-18 205 views
0

我有以下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 
+0

如果源是一個XML文件,關於使用XSLT/XPath的是什麼?你在做什麼操作系統? – AlG 2010-08-18 18:22:51

回答

1

簡單使用awk和sed做,假設數據是在文件「test.data」:

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

正是我需要的 - 謝謝! :) – drewrockshard 2010-08-18 20:10:31

2

對於例如輸入數據,以下sed腳本將工作:

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

.*\/比賽長達一個斜槓(貪婪)。然後\(.*\)\.xml與該行的最後一個匹配,並抓取組中的基本文件名。 \1告訴它用它代替組中的所有內容。

0

接受的答案可以在沒有無用的貓被簡化和sed,

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