¿Cuál es la diferencia entre hacer cat y hacer solo tuberías?

¿Cuál es la diferencia entre hacer cat y hacer solo tuberías?

Supongo que escribí 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

dos preguntas: 1) por qué el primer script funciona como se esperaba sólo cuando lo escribo así:

cat `cat <file1.txt> | grep "*.log" | head -4 | tail -2`  helper | sort -r -n -k2 

2) ¿Debo usar grep "*.log"o grep ".log"?

Qué hace el guión:

dado un archivo1, queremos leer solo 2 archivos de registro cuando el último es el número 4 de todos los archivos .log en el archivo1 dado: ejemplo:

ingrese la descripción de la imagen aquí

Quiero que la primera parte del script diga: martes.log y miércoles.log y luego calcular la hora de cada tiempo de registro de cada persona cuyo nombre está en los archivos del registro: ingrese la descripción de la imagen aquí

y esto se imprimirá:

ingrese la descripción de la imagen aquí

Respuesta1

Para responder a su pregunta, el problema está en el uso de grep.

Grep toma lo que usted pone como literal, por lo que si hace grep con *.log, buscará activamente la estrella del personaje *seguida de .log, por lo que no encontrará nada.

Como prueba rápida,

El comando echo hello.log | grep "*.log"no devolverá nada

El comando echo hello.log | grep ".log"devolverá la línea.

información relacionada