awk print 'char

3

Eu quero imprimir:

cat file.log | awk '{print nir's $1}'

a saída deve ser:

nir's aaa
nir's bbb
nir's abc
nir's dbc

O problema está no ' in nir's .

Eu também tentei:

cat file.log | awk '{print nir\'s $1}'
cat file.log | awk '{print nir''s $1}'
cat file.log | awk '{print nir'''s $1}'
    
por Nir 22.12.2013 / 15:32

3 respostas

3

Você precisa citar a aspa simples para protegê-la do shell. Isso significa que, em vez de

$ cat file.log | awk '{print nir's $1}'

você tem que escrever algo como

$ awk '{print "nir'"'"'s",$1}' file.log
    
por 22.12.2013 / 15:35
6

Existem dois problemas aqui:

  1. Você não pode passar ' dentro de ' , o que você também está usando para citar a sintaxe awk. Você precisa deixar a citação primeiro;
  2. Você precisa citar strings no awk.

Parece que é isso que você quer:

awk '{print "nir'\''s " $1}'
    
por 22.12.2013 / 15:33
2

Isso deve funcionar:

cat file.log | awk '{print "nir7s " $1}'
    
por 22.12.2013 / 16:27