Como construir um comando grep com um argumento variável no bash?

0

Estou tentando fazer algo assim no bash:

grep ( date | awk '{print "2006-" $6}' ) /some/file/here

Mas essa sintaxe está incorreta.

O objetivo é grep / some / file / here para o padrão 2006-2011, onde 2011 é o ano atual.

    
por WilliamKF 09.04.2011 / 19:35

1 resposta

3
grep "$(date | awk '{print "2006-" $6}')" /some/file/here

"..." mantém seu conteúdo como um argumento (mesmo se houver espaço em branco).

$(...) é para "substituição de comando", onde o stdout de executar o comando incorporado será colocado na linha de comando original. (Outra sintaxe, '...' , também é comum, mas muito mais difícil de aninhar.)

Mais fácil:

grep "$(date +'2006-%Y')" /some/file/here

Aqui, você usa a capacidade da data para formatar a saída arbitrariamente.

Observe que nenhum deles corresponde a um ano no intervalo de 2006-2011; eles correspondem à sequência literal "2006-2011". Se você quiser combinar um ano, avise-nos.

    
por 09.04.2011 / 20:24