1

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

但是下面的代码会打印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

4

2 回答 2

0

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

awk '1
index($0, "ns:translate") {
   printf "<Name xml:lang=\"sp\">%s</Name>\n", ARRAY[xx++]
}' $1
于 2012-10-17T23:53:20.890 回答
0

听起来你想要:

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

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

于 2012-06-15T08:13:45.243 回答