AWK从XML元素获取属性值

用户名

大家好,我正在尝试使用AWK从XML文件中提取version=pkg-info

我想做些类似的事情:

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

先感谢您

RARE Kpop宣言

假设标签内没有换行符

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确切地用作FS的打开和关闭标签时,则$ 2必须是此类标签的第一次出现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章