Como pesquisar algo que está em uma variável de ambiente e tem uma barra?

4

Eu quero grep um arquivo, e eu quero pegar todas as linhas que têm uma determinada variável de ambiente (para ser exato, $PWD ).

Claro, usando apenas

cat file | grep '/'$PWD'/'

não está funcionando, pois $PWD contém barras.

Estou tentando descobrir como fazê-lo corretamente, mas surjo apenas com soluções estranhas e complicadas demais. O que é uma maneira simples de fazer isso?

    
por Karel Bílek 22.11.2014 / 04:45

2 respostas

6

Use apenas aspas duplas em vez de aspas simples e não é necessário usar cat (Consulte UUOC ):

grep -F -- "$PWD" file

E lembre-se de que sem -F , $PWD seria tratado como uma expressão regular em oposição a uma string a ser procurada no file .

    
por 22.11.2014 / 04:48
2

Como a barra não é um caractere especial, você pode usá-la livremente:

grep "$PWD/" file

Adicionar o rejeito / não causará nenhum problema. No entanto, a barra é um caractere especial no awk e no sed. Padrões são colocados por / /. Nesta situação, você pode usar

awk -v pattern="$PWD/" '$0 ~ pattern' file

para evitar a gramática awk / pattern / {action}. Aqui "~" é o operador de correspondência, $ 0 significa a linha inteira.

    
por 22.11.2014 / 07:36

Tags