Questão variável de cadeia de concatenação awk-awk


Eu gostaria de awk concatenar variável de seqüência de caracteres no awk. Como eu posso fazer isso? Eu tentei:

BEGIN{
t="."
r=";"
w=t+r
print w}

Mas eu não trabalho. Saída:

0

Ou eu quero adicionar variável e resultado da função. Entrada:

t t t t
a t a ta
ata ta a a

Roteiro:

{
key="t"
print gsub(key,"")#<-it's work
b=b+gsub(key,"")#<- it's something wrong
}
END{
print b}#<-so this is 0

Saída:

4
2
2
0#<-the last print

2


origem


Com t+r você coloca implicitamente ambas as variáveis ​​em números, e ambas se tornam zero. Strings que se assemelham a números são convertidos em números: t="1";r="2";w=t+r;print w impressões 3. - simlev


Respostas:


Nenhum operador é necessário (ou usado). Seu exemplo seria algo como

BEGIN{
t="."
r=";"
w=t r
print w}

Para discussão relacionada


6



Está bem. Eu tenho mais um problema. Eu gostaria de fazer operação aritmética: b = b + gsub (key, ""). Vou adicionar isso no meu post. - diego9403
@ diego9403: publique-o como uma nova pergunta - Thor
concordo - a adição à pergunta do OP exercita um aspecto diferente das strings. - Thomas Dickey