AWK從XML元素獲取屬性值

大家好,我正在嘗試使用AWK從XML文件的pkg-info中提取version=值。

我想做一些類似的事情:

cat file_below.txt | awk some_commands

使用以下數據

<?xml version="1.0" encoding="utf-8"?>
<pkg-info overwrite-permissions="true" relocatable="false" identifier="com.application.something" version="1.2.3" format-version="2" generator-version="ABC" install-location="/Applications" auth="root">
</pkg-info>

所需輸出為:

1.2.3

先謝謝你

? 最佳回答:

假設標簽中沒有換行符

gawk/mawk/mawk2 'BEGIN { FS = "version=\"" } /^[<]pkg-info/ {

    print substr($2, 1, index($2, "\"") -1 ); exit; }' 

處理隨機數據的版本\n

gawk/mawk/mawk2 'BEGIN { FS="version=\"" } (NF > 1) { 
       
    if (seen++) { print substr($2,1,index($2, "\"")-1); exit; } }' 

這將跳過第一次看到版本時的初始xml標記。第二次打印版本號時退出。除了雙引號外,此代碼不需要對版本號的格式進行假設。

解釋pkg-info無處不在的版本:

gawk/mawk/mawk2 'BEGIN { RS = "^$"; FS = "([<]pkg-info|[\/]pkg-info[>])";
   
   } match($2, /version=[^ ]+/) {

       print substr($2, RSTART + 9, RLENGTH - 10); exit; }'

只是讓它讀入整個XML文件,而不是試圖沿著NL拆分內容。然后,當您強制FS正好是它的開始標記和結束標記時,那么$2必須是此類標記的第一個出現。

主站蜘蛛池模板: 国产午夜精品一区二区| 日韩在线一区二区三区免费视频| 日韩欧美一区二区三区免费观看| 国产精品综合AV一区二区国产馆| 高清在线一区二区| 国产精品合集一区二区三区| 精品成人av一区二区三区| 国产视频一区二区在线观看| 国产日韩精品视频一区二区三区| 中文字幕亚洲乱码熟女一区二区| 日韩AV在线不卡一区二区三区| 久热国产精品视频一区二区三区| 国产经典一区二区三区蜜芽| 污污内射在线观看一区二区少妇 | 伊人色综合网一区二区三区| 亚洲AV综合色区无码一区 | 亚洲国产情侣一区二区三区 | 日本在线视频一区| 国产无人区一区二区三区| 亚洲Av无码国产一区二区| 国产精品福利一区二区久久| 无码国产精品一区二区免费| 午夜影院一区二区| 日本一区二区三区爆乳| 亚洲AV无码一区二区大桥未久| 亚洲A∨精品一区二区三区下载| 国产乱码一区二区三区| 无码av中文一区二区三区桃花岛| 51视频国产精品一区二区| 精品无码成人片一区二区98| 97精品国产一区二区三区| 精品国产一区二区二三区在线观看| 国产欧美一区二区精品仙草咪| 日本高清一区二区三区| 日韩人妻无码免费视频一区二区三区 | 无码国产精品一区二区免费虚拟VR | 人妻体内射精一区二区三四| 蜜桃无码AV一区二区| AV鲁丝一区鲁丝二区鲁丝三区| 国内精品一区二区三区最新| 全国精品一区二区在线观看|