Obtendo um formato de data com grep

0

Eu olhei para questões semelhantes e tentei a maioria das sugestões, mas nenhuma delas me levou a lugar nenhum, apesar de eu ter uma tarefa bem simples, eu acho: S. Eu sou relativamente novo nessa coisa toda, então fiquei sem ideias sobre o que tentar ou o que estou fazendo de errado ...

Portanto, a tarefa é obter as linhas de um arquivo listado (com grep) que contêm o nome e o dia do mês curtos (como 22 de outubro). O arquivo tem uma longa lista de formatos (contendo arquivos criados na data atual), então deve haver alguns resultados. No entanto, estou obtendo resultados em que apenas o mês foi examinado e encontrado, o dia não foi.

Algumas das coisas mais sensatas que já experimentei até agora:

grep $(date +"%b %e") *filename*

Em seguida, recebo uma linha dizendo "grep: 22: nenhum arquivo ou diretório" e uma listagem com todos os resultados do mês ("Oct"). Mesmos resultados com +%d %e ou +'%d %e' ou '+%d %e' em vez de +"%d %e"; em vez de $() . (Eu também tinha% d para o dia por um tempo, o que não fez diferença, e não deveria importar de qualquer maneira, até onde eu sei, já que a data em questão agora era 22).

Por que o dia não é levado em consideração aqui?

    
por lunis 23.10.2013 / 00:21

1 resposta

4

grep "$(date +"%b %d")" *files*

deve ser melhor.

Se você deixar de fora as aspas duplas, o resultado da substituição do comando $(date +"%b %d") será dividido em palavras separadas. Sempre use aspas duplas em torno de substituições de variáveis "$variable" e substituições de comandos "$(somecommand)" a menos que você saiba por que precisa deixá-las de fora.

    
por 23.10.2013 / 00:26