Estoy tratando de aprender mejor la línea de comandos y me pregunto cuál sería la diferencia entre estos dos comandos.

grep -c ^b example 

y

grep ^b example| cat –n 

Comentarios

  • Bienvenido a Unix y Linux . Si desea aprender la línea de comandos, la mejor manera es experimentar ejecutando los comandos usted mismo utilizando diferentes archivos de entrada. Las preguntas deben mostrar un esfuerzo de investigación, así que ' d le aconsejo que consulte las páginas de manual relevantes para averiguar el propósito de las diferentes opciones. Las páginas de manual no son ' t las más legibles si ' eres nuevo en Unix, así que si tienes algún problema para entenderlo, puedes editar esta pregunta para hacerla más específico (y útil). Consulta Cómo preguntar y no dudes en realizar el recorrido .
  • (-1) Ni siquiera los mismos comandos. Dos comandos no relacionados.
  • ¿Intentaste ejecutar los comandos?

Responder

Bueno , de acuerdo con el manual , grep:

busca PATRÓN en cada ARCHIVO . De forma predeterminada, grep imprime las líneas coincidentes.

y con -c bandera:

-c, --count 

Suprime la salida normal; en su lugar, imprima un recuento de líneas coincidentes para cada archivo de entrada.

Entonces, grep -c ^b example imprime el número (recuento) de líneas que coinciden con el patrón, mientras que grep ^b example imprime las líneas mismas.

En cuanto a cat, se describe

concatenar archivos e imprimir en el salida estándar

y lo que hace el indicador -n es:

-n, --number 

numere todas las líneas de salida

Dada la tubería y no nombres de archivo, cat lee de la tubería, por lo que la salida es la salida de grep, con números de línea agregados. Por lo tanto, grep ^b example| cat –n imprime todas las líneas coincidentes, numeradas.


Esto es diferente de grep -n ^b example, donde grep agrega el li ne números de los partidos. grep conoce los números de línea del archivo original, mientras que cat solo ve la salida de grep y numera las líneas en consecuencia.

Entonces, dado el archivo de entrada

$ cat example bar foo basf 

Tenemos:

$ grep -c ^b example 2 $ grep ^b example |cat -n 1 bar 2 basf $ grep -n ^b example 1:bar 3:basf 

Responder

Ok, comando:

  1. grep -c ^b example: muestra el recuento de líneas coincidentes para las líneas que comienzan con la letra b y

  2. grep ^b example | cat -n: pase el resultado del comando grep al comando cat y enumere con números de línea. -n obliga a cat a enumerarlos junto con los números de línea.

Ejemplo :

example.txt con contenido:

media sound3 media sound1 media sound2 find sound -type f -name sound[0-9] -printf "media %f\n" > file.txt find sound -type f -name sound[0-9] -exec bash -c "echo media bash >> file.txt" {} \; find sound -type f -name sound[0-9] -exec bash -c "f="{}"; echo media $( basename ${f}) >> file.txt" \; 

Resultado de (1):

3 

Resultado de (2):

1 media sound3 2 media sound1 3 media sound2 

Comentarios

  • Sí tu derecho!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *