【问题标题】:accessing special character array within awk在 awk 中访问特殊字符数组
【发布时间】:2012-06-18 05:24:40
【问题描述】:

我想使用awk 打印包含特殊字符的数组的内容。下面是awk 代码,我在其中尝试打印数组ARRAY,其中xx 是数组的索引。

但是下面的代码会打印ARRAY1, ARRAY2.... 而不是打印数组的内容。

awk 'BEGIN { xx=0; }
{
    if (index($0, "ns:translate") > 0) {
        print $0;
        print "<Name xml:lang=\"sp\"> ARRAY" xx "</Name>";
        xx++;
    } else {
        print $0;
    }
}' $1

数组的内容是:

[\u8815S - Perce ~~~~~~~~~ ~~~~~~~~~ ~~\u573  
\u8915S - add ~~~~~~~~~ ~~~~~~~~~ ~~\u583  
\u8615S - sub ~~~~~~~~~ ~~~~~~~~~ ~~\u573  
\u8835S - mult ~~~~~~~~~ ~~~~~~~~~ ~~\u593  
\u8865S - div ~~~~~~~~~ ~~~~~~~~~ ~~\u993
    .....]

该数组有近 100 个元素。谁能帮我访问awk中的特殊字符数组?

【问题讨论】:

    标签: arrays awk


    【解决方案1】:

    听起来像你想要的:

    print "<Name xml:lang=\"sp\">" ARRAY[xx] "</Name>";
    

    参考:http://www.gnu.org/software/gawk/manual/gawk.html#Reference-to-Elements

    【讨论】:

    • 我也没有得到数组内容。我得到了一个空白
    • 您能否包含填充 ARRAY 的 awk 脚本的其余部分?
    【解决方案2】:

    “ARRAY”实际上不是一个 awk 数组,而是存在于您调用 awk 的操作系统中,这是一个很好的猜测吗?好吧,以防万一,如果“ARRAY”实际上是一个 awk 数组,您将如何在上面编写 awk 脚本:

    awk '1
    index($0, "ns:translate") {
       printf "<Name xml:lang=\"sp\">%s</Name>\n", ARRAY[xx++]
    }' $1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      相关资源
      最近更新 更多