usando o awk com variáveis [duplicado]

0

Eu estou fazendo uma lista de palavras de todas as palavras digitadas em um programa que estará trabalhando com o texto inserido nele. Eu quero usar um editor de fluxo como sed ou awk para pesquisar a primeira palavra de cada linha em um documento e retornar o número da linha quando um padrão - armazenado em uma variável - for encontrado. Eu tenho tanto funcionando corretamente até agora:

awk $1 '{print $1 " " NR""}' dictionary.txt | awk '/^**myWord** /' | cut -d" " -f2

No entanto, não consigo descobrir como usar uma variável no lugar de "myWord". Por exemplo, só recebo erros quando uso:

read=searchWord

awk $1 '{print $1 " " NR""}' words.txt | awk '/^**$searchWord** /' | cut -d" " -f2
    
por XBuilder 25.01.2017 / 05:39

2 respostas

0

A expansão da variável não ocorrerá dentro de uma única string ' citada. Experimente:

searchWord="myWord"
awk $1 '{print $1 " " NR""}' words.txt | awk '/^**'"$searchWord"'** /' | cut -d" " -f2
    
por 25.01.2017 / 05:47
0

Experimente awk -v

-v var=val
--assign var=val
    Assign the value val to the variable var, before execution of the program begins.  
    Such variable values are  available  to  the  BEGIN block of an AWK program.
    
por 25.01.2017 / 06:01