Passando uma variável com espaços de bash para awk [duplicado]

1

Eu estou tentando passar uma variável que contém espaços de bash para awk. Eu tenho simples um script simples para fazer isso com variáveis de seqüência única (em que estou pesquisando a primeira coluna do arquivo para a variável), por exemplo:

var=string

awk -v v=$var '(index($1, v) !=0) {print}' FILE

Isso não funciona se var="string1 string2" . Eu tenho novas pesquisas onde as variáveis são grupos de palavras separadas por espaços como na segunda var. Por exemplo,

var="string1 string2 string_n"

awk -v v=$var '(index($1, v) !=0) {print}' FILE
    
por CJF 10.11.2017 / 02:06

1 resposta

-1

Você tem que colocar $var em apóstrofos duplos também no comando awk , então:

varName="a string with spaces"
awk -v var="$var" '{...your awk code...}'

É porque o comando awk será chamado por um shell, e a maioria dos shells, incluindo o bash, esquece os tokens após a substituição da variável.

    
por 10.11.2017 / 07:12

Tags