访问awk中的特殊字符数组

时间:2012-06-15 06:27:37

标签: arrays awk

我想使用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中的特殊字符数组吗?

2 个答案:

答案 0 :(得分:0)

这听起来像你想要的:

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

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

答案 1 :(得分:0)

“ARRAY”实际上不是一个awk数组,而是存在于你从awk调用的操作系统中吗?好吧,如果它有助于你如何写你的awk脚本以上IF“ARRAY”实际上是一个awk数组:

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