微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我指定要打印的字段时,为什么 AWK 在文件操作的默认读取记录中打印整行

如何解决当我指定要打印的字段时,为什么 AWK 在文件操作的默认读取记录中打印整行

    #!/usr/bin/awk -f
    
    BEGIN {
            FS="><";
            print "XML Tags";
    }
    {
            for(x=1; x<=NF; x++) {
                    if (x==1) {
                            f=$x">";
                    } else {
                            f="<"$x">";
                    }
                    if (f!="\n") {
                            printf f"\n";
                    }
            }
    }
    END {
            print "End of tags";
    } $1;

大家好,

我有一个 XML 文件,全部在一行中。我正在使用上面的 AWK 脚本将其分成几行。 该脚本在单独的行上生成每个字段,然后再次打印整行。

因为这对我来说是一个学习练习,有人能指出我哪里出错了吗?

当我在认操作前面添加一个模式作为条件时,我仍然得到相同的输出,如上文所述。我添加的模式是/SIZE/,这是文件中唯一一行中的一个词。

我在 Gentoo 机器和 AIX 机器上看到的输出是一样的。所以一定是我的代码

这让我发疯......

解决方法

您可以使用 awk 来打印漂亮的 XML,而不是使用 xmllint

xmllint --format filename

对于 Solaris,您可以查看此 man page

您也可以查看this Q/A

,

答案是从脚本末尾删除 $1 - 它是从 ksh 脚本中运行 AWK 的剩余部分

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。