Usando o comando grep para resultados absolutos

0

Se usarmos o comando grep com '\<string\>' , o resultado será absoluto. Por exemplo:

Arquivo1:

test
test2
1test

Se usarmos cat File1 | grep test , a saída será:

test 
test2 
1test

Mas se quisermos obter apenas a primeira linha, devemos grep '\<test\>' .

Aqui está a pergunta: como usar esses caracteres com uma variável no script? Exemplo:

cat file1 | grep '/<$1/>'

Mas este comando não funciona.

    
por Gefolge 10.08.2017 / 08:30

2 respostas

1

Aspas simples não permitem expansão de variável. Assim, '$1' será um literal $1 . Em vez disso, você quer aspas duplas. Veja esta entrada na wiki sobre citações para mais.

$ foo=test
$ grep "\<$foo\>" file1
test

Observe que <\ e \> também podem ser substituídos por limites de palavras:

$ grep "\b$foo\b" file1
test    

Você também não precisa cat de um arquivo para grep - ele pode ler um arquivo sozinho.

    
por 10.08.2017 / 09:03
1

Você está procurando -w para corresponder às palavras:

$ grep -w 'test' File1
test

Caso você tenha a informação em uma variável, use-a normalmente com aspas duplas como slhck já explicado :

$ var="test"
$ grep -w "$var" File1
test

Em man grep :

-w
--word-regexp

Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore. This option has no effect if -x is also specified.

    
por 10.08.2017 / 12:17

Tags