A primeira chamada de sed
está aplicando os comandos de substituição ( s
) a um conjunto de linhas que são selecionadas usando uma expressão regular como um intervalo de endereços.
A segunda invocação aplica as mesmas substituições que a primeira, mas para todas as linhas dos dados de entrada sem usar intervalos de endereços.
Teste em 225 MiB de arquivos de e-mail:
$ find . -type f -name "*.gz" -exec zcat {} + | time gsed -e '/\s.*$/ s///' -e '/\(.*\)/ s//\L/' >/dev/null
real 1m0,39s
user 0m49,69s
sys 0m10,53s
$ find . -type f -name "*.gz" -exec zcat {} + | time gsed -e 's/\s.*$//' -e 's/\(.*\)/\L/' >/dev/null
real 0m40,79s
user 0m34,02s
sys 0m7,85s
Eu corri isso algumas vezes. Os tempos apresentados são representativos.
Como você pode ver, eu obtenho o formulário de resultados oposto ao que você diz ter recebido. Isso pode ser devido aos dados. Resultados semelhantes foram obtidos ao testar o OpenBSD sed
nos mesmos dados, embora a diferença nos tempos fosse menor.