2012-06-15 4 views
1

Я хочу распечатать содержимое массива, содержащего специальные символы, с помощью awk. Ниже приведен код awk, в котором я пытаюсь напечатать массив «ARRAY», где «xx» - это индекс массива.Доступ к специальному массиву символов в awk

Но приведенный ниже код печатает «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?

ответ

0

Это звучит, как вы хотите:

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

Ссылка: http://www.gnu.org/software/gawk/manual/gawk.html#Reference-to-Elements

+0

с этим также я не получаю содержимое массива. Я получаю пустой вместо – user1457929

+0

Можете ли вы включить остальную часть awk-скрипта, который заполняет ARRAY? – cmbuckley

0

Будет ли это хорошее предположение, что «МАССИВ» на самом деле не является массивом AWK, но вместо этого существует в ОС вы звоните awk из? Ну, в случае, если это поможет вам написать ваш awk-скрипт выше, если «ARRAY» на самом деле был массивом awk:

awk '1 
index($0, "ns:translate") { 
    printf "<Name xml:lang=\"sp\">%s</Name>\n", ARRAY[xx++] 
}' $1 
Смежные вопросы