Optimizando el comando sed o creando uno nuevo

Optimizando el comando sed o creando uno nuevo

Estoy intentando filtrar un archivo de registro realmente grande y me pregunto si hay alternativas para mis comandos. ¿O alguna optimización? aquí está el código:

#!/bin/bash
nice -20 sed '/./{H;$!d;};x;/37455299339/!d' 1.txt > /tmp/new.txt
nice -20 sed -n '/Acct-Status-Type/,/NAS-Identifier/p' /tmp/new.txt > /tmp/new_1.txt
rm /tmp/new.txt
nice -20 sed '/Acct-Status-Type/{x;p;x;}' /tmp/new_1.txt > /tmp/new_2.txt
rm /tmp/new_1.txt
nice -20 less /tmp/new_2.txt | grep -A1 -B1 37455299339 | grep -A1 -B1 User-Name > new_3.txt

Respuesta1

Como primer paso, eliminaría todos los archivos temporales y usaría pipe en su lugar: desde el primero, sedpuede canalizar la salida estándar al segundo y luego al tercero. Entonces, su lesscomando es inútil: simplemente vuelva a canalizar desde el tercero sedhasta grep.

Al utilizar pipe tendrá muchos beneficios: en primer lugar, no desperdiciará su espacio en disco y, en segundo lugar, no tendrá que esperar todas estas E/S de disco.

Para encontrar mejor una solución, debes decirnos qué te bloquea actualmente: ¿es uno de los sedcomandos? ¿Cuál?

información relacionada