awk pattern com variável em um script bash

2

Eu tenho problema com o comando awk no bash Eu quero encontrar o padrão com variável, mas não funciona. Você pode me dizer o que há de errado com essa linha?

awk -F" "  "/$PWD/ {print $1,$3}"  file.txt
    
por applenic 17.03.2015 / 15:08

1 resposta

4

Como você tem usado aspas duplas, qualquer $ -variables será expandida por bash antes que eles atinjam o awk. Esse é o primeiro problema: { print $1, $3 } expandirá para { print , } .

Em seguida, a sintaxe do awk que você está tentando usar é /<regular expression>/ { <action> } : a expressão regular não tem permissão para conter barras não selecionadas, mas $PWD certamente contém algumas. Essa é a segunda questão.

Você pode tentar algo assim:

"/${PWD//\//\/}/ { print \, \ }"

Isso pede ao bash que substitua quaisquer ocorrências de / em $PWD por \/ e também escape dos $ sinais de $1 e $3 para que o bash os deixe intactos.

    
por 17.03.2015 / 15:24