variável de string exata grep

variável de string exata grep

Quero obter a string exata 'CAAJ' de um arquivo "aaa.log" e o conteúdo a seguir.

cat aaa.log

CAAJ:dd20gf:acldx009:rel7

CAAJ:dd20gi:acldx009:rel7

CAAJ:dd20gp:acldx0059:rel7

CAAJ-TEST:de27ff:acldx003:rel7

CAAJ-TEST:de27ei:acldx003:rel7

CAAJ-TEST:de27ep:acldx003:rel7

Resultado esperado:

CAAJ:dd20gf:acldx009:rel7

CAAJ:dd20gi:acldx009:rel7

CAAJ:dd20gp:acldx0059:rel7

Estou tentando o seguinte código. E recebo o O/p.

grep -E '(^|)CAAJ(:|$)' aaa.log

CAAJ:dd20gf:acldx009:rel7

CAAJ:dd20gi:acldx009:rel7

CAAJ:dd20gp:acldx0059:rel7

Mas quando uso uma variável em vez da string exata, não consigo obter o O/p

var=CAAJ

grep -E '(^|)${var}(:|$)' aaa.log

OR 

grep -E '(^|)"${var}"(:|$)' aaa.log

Nada disso funcionou.

Quero usar a variável em vez da string exata e obter o o/p desejado

Responder1

tente isso..

awk -F: '$1=="CAAJ" aaa.log

usando variável no awk

awk -F: -vv="$var" '$1==v' aaa.log

comando grep

grep "^$var:" aaa.log

Responder2

Em primeiro lugar, não tenho ideia do que vocêpensaros parênteses estão funcionando, mas não há razão alguma para usar (^|). Isso significa "início da string ou nada". Estou surpreso que seja uma sintaxe válida.

Da mesma forma, (:|$)parece sem sentido quando todas as ocorrências que lhe interessam ocorrem ao mesmo tempo.começarda corda.

Se você colocar uma variável entre aspas duplas, ela será expandida. Se você colocar entre aspas simples, isso não acontecerá.

Você não precisa de regex estendido para nada disso.


Em vez de:

grep -E '(^|)'${var}'(:|$)'

Usar:

grep ^CAAJ: aaa.log

Ou:

var=CAAJ
grep "^${var}:" aaa.log

Ou, como o delimitador de campo de seu interesse é :, basta usar Awk:

awk -F: '$1 == "CAAJ"' aaa.log

Observe que neste último caso, as aspas simples são para o shell e as aspas duplas são para o Awk. Tudo dentro das aspas simples, incluindo $1, será passado para o Awk exatamente como está.

Responder3

Experimente isto:

var=CAAJ;grep "^$var:" aaa.log;

Responder4

tentar

grep -E "(^|)${var}(:|$)" aaa.log

informação relacionada