suponha que eu escrevi este script:
#print_time..
cat <file1.txt> | grep "*.log" | head -4 | tail -2 | helper | sort -r -n -k2
#helper..
while read line; do
linearr=($line)
(( time =${line[2]} - ${line[1]} +0 ))
echo ${line[o]} $time
done
duas perguntas: 1) por que o primeiro script funciona conforme o esperado apenas quando eu o escrevo assim:
cat `cat <file1.txt> | grep "*.log" | head -4 | tail -2` helper | sort -r -n -k2
2) Devo usar grep "*.log"
ou grep ".log"?
O que o script faz:
dado um arquivo1, queremos ler apenas 2 arquivos de log quando o último for o número 4 de todos os arquivos .log no arquivo1 fornecido: exemplo:
Quero que a primeira parte do script leia: tuesday.log e quarta-feira.log e depois calcule o horário de cada horário de log de cada pessoa cujo nome está nos arquivos de log:
e isso será impresso:
Responder1
Para responder à sua pergunta, o problema está no uso do grep
.
Grep considera o que você colocou como literal, portanto, se você usar grep com *.log
, ele procurará ativamente pela estrela do caractere *
seguida por .log
, portanto não encontrará nada.
Como um teste rápido,
O comando echo hello.log | grep "*.log"
não retornará nada
O comando echo hello.log | grep ".log"
retornará a linha