De um modo geral, quanto mais especializada é uma ferramenta, mais rápida é. Portanto, na maioria dos casos, você pode esperar cut
e grep
ser mais rápido que sed
e sed
ser mais rápido que awk
. Se você compara pipelines mais longos de ferramentas mais simples com uma única chamada de uma ferramenta mais complexa, não há regra de ouro. Isso só importa com grandes entradas (digamos, milhões de linhas); para entradas curtas, você não verá nenhuma diferença.
A vantagem de ferramentas mais complexas é que elas podem fazer mais coisas.
Seus comandos usam o gato desnecessariamente. Em vez disso, use o redirecionamento (especialmente se estiver preocupado com a velocidade, embora você provavelmente não deva se preocupar com a velocidade até executar os benchmarks¹).
<fileName awk '/WORD/ { print $2 }'
<fileName grep WORD | cut -f 2 -d ' '
Esses comandos são quase equivalentes. As diferenças são:
- awk e grep têm diferentes sintaxes regexp . Awk e
grep -E
tem sintaxes regexp quase idênticas (expressões regulares estendidas).
cut -d ' '
trata cada caractere de espaço individual como um delimitador. O delimitador padrão do Awk é qualquer sequência de espaços em branco, que pode ser vários espaços, uma guia etc. Você não pode usar sequências arbitrárias de espaços em branco como separadores cut
. Para utilizar espaços individuais como separadores em awk, definir o separador de campos para uma expressão regular que corresponde a um único espaço, que não seja uma expressão regular que consiste de espaço único (que é um caso especial que significa “qualquer sequcia de espaços em branco”, isto é, o padrão): awk -F '[ ]' '/WORD/ {print $2}'
.
¹ A primeira regra do Programa de Otimização: não fazê-lo. A Segunda Regra da Otimização de Programas (somente para especialistas!): Não faça isso ainda. - Michael A. Jackson
echo filename
oucat filename
?