Оптимизация команды sed или создание новой

Оптимизация команды sed или создание новой

Я пытаюсь отфильтровать очень большой файл журнала и мне интересно, есть ли какие-то альтернативы моим командам? Или какая-то оптимизация? Вот код:

#!/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

решение1

В качестве первого шага я бы удалил все временные файлы и вместо этого использовал бы pipe: из первого sedвы можете перенаправить stdout во второй, а затем в третий. Тогда ваша lessкоманда бесполезна: просто перенаправьте снова из третьего sedв grep.

Используя pipe, вы получите множество преимуществ: во-первых, вы не будете тратить место на диске, во-вторых, вам не придется ждать всех этих операций ввода-вывода на диске.

Для лучшего поиска решения вам следует сообщить нам, что именно вас сейчас блокирует: это одна из sedкоманд? Какая именно?

Связанный контент