我想用awk查找包含在xml標籤中的名稱值,如果它是1個字符串但是當有空格awk將每個單詞作爲新記錄拆分時,我可以指定值。 另外我的xml沒有換行符。在shell腳本中搜索xml標籤值和空格
我的輸入文件是:
<?xml version="1.0"?><?xml-stylesheet href="catalog.xsl" type="text/xsl"?><type><retail><custdata><Nm>John Smith</Nm><pstaddr1>10 north block</pstaddr1><pstaddr2>boeard st.</pstaddr2><ctry>HR</ctry></custdata><custdata><Nm>Jeff Blanks</Nm><pstaddr1>263 Jef. St.</pstaddr1><pstaddr2>3rd Avenue</pstaddr2><ctry>HR</ctry></custdata></retail><corporate></corporate></type>
我試圖使用方法:
#!/bin/bash
for a in $(ls /usr/cycle1/sample/*.dat)
do
for c in $(awk 'BEGIN{ FS="[<>]";RS="</"; }; /Nm/{ print $2; }' "$a")
do
echo $c
done
done
輸出我得到的是:
John
Smith
Jeff
Blanks
而不是
John Smith
Jeff Blanks
我可能會做記錄分隔符錯誤,但因爲我是新來awk不知道什麼是確切的問題。你可以幫忙嗎?
我同意你和xmlstarlet是我的偏好,但它是生產服務器,我有有限的選擇。不幸的是,由於所有的繁文I節,我無法安裝它。 – aj1981
這就是爲什麼我也給出了一個解決圍繞awk的bash的答案。 –
...但是,如果(看起來)awk也是越野車,那就要求有些不同。 –