En términos generales, cuanto más especializada es una herramienta, más rápida es. Entonces, en la mayoría de los casos, puede esperar cut
y grep
ser más rápido que sed
, y sed
ser más rápido que awk
. Si está comparando tuberías más largas de herramientas más simples con una sola invocación de una herramienta más compleja, no hay una regla general. Esto solo importa con entradas grandes (digamos, millones de líneas); para entradas cortas, no verá ninguna diferencia.
La ventaja de las herramientas más complejas es, por supuesto, que pueden hacer más cosas.
Sus comandos usan gato innecesariamente. Utilice la redirección en su lugar (especialmente si está preocupado por la velocidad, aunque probablemente no debería preocuparse por la velocidad hasta que haya ejecutado puntos de referencia¹).
<fileName awk '/WORD/ { print $2 }'
<fileName grep WORD | cut -f 2 -d ' '
Estos comandos son casi equivalentes. Las diferencias son:
- awk y grep tienen diferentes sintaxis regexp . Awk y
grep -E
tienen sintaxis regexp casi idénticas (expresiones regulares extendidas).
cut -d ' '
trata cada carácter espacial individual como un delimitador. El delimitador predeterminado de Awk es cualquier secuencia de espacios en blanco, que puede ser múltiples espacios, una pestaña, etc. No puede utilizar secuencias arbitrarias de espacios en blanco como separadores con cut
. Para utilizar espacios individuales como separadores en awk, ajuste el separador de campo a una expresión regular que coincide con un solo espacio, que no sea una expresión regular que consiste en solo espacio (que es un caso especial que significa “cualquier secuencia de espacios en blanco”, es decir, el valor por defecto): awk -F '[ ]' '/WORD/ {print $2}'
.
¹ La primera regla de optimización del programa: no lo hagas. La segunda regla de optimización de programas (¡solo para expertos!): No lo hagas todavía. - Michael A. Jackson
echo filename
ocat filename
?