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

最初のステップとして、すべての一時ファイルを削除し、代わりにパイプを使用します。最初のファイルから始めて、sedstdoutを2番目のファイルにパイプし、3番目のファイルにパイプします。もしそうなら、あなたのless命令は役に立ちません。 3番目のコマンドで再パイプsedしますgrep

パイプを使用すると多くの利点があります。まず、ディスク容量を無駄にせず、2番目に、すべてのディスクI / Oを待つ必要はありません。

解決策をよりよく見つけるには、現在何があなたをブロックしているかを教えてください。コマンドの1つですsedか?どれ?

おすすめ記事