优化 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

作为第一步,我将删除所有临时文件并改用管道:从第一个文件开始,sed您可以通过管道将 stdout 传输到第二个文件,然后再传输到第三个文件。然后,您的less命令就没用了:只需再次从第三个管道传输sedgrep

使用管道会给你带来很多好处:首先,你不会浪费你的磁盘空间,其次,你不会等待所有这些磁盘 I/O。

为了更好地找到解决方案,您应该告诉我们当前阻碍您的是什么:它是命令之一sed吗?哪一个?

相关内容