在SED命令中传递多个文件:日志提取

时间:2014-07-02 13:37:40

标签: regex linux bash unix sed

我正在尝试从特定时间戳内的应用程序中提取日志。所以我写了以下脚本

a= echo $1 | sed 's/\//\\\//g';
b= echo $2 | sed 's/\//\\\//g';

sed -n "/$a/,/$b/p" $3;

这里$ 1和$ 2是我想要日志的时间戳,$ 3是我想要的文件。

如果我传递单个文件,此脚本将非常完美。但如果我多个文件或目录作为参数,它不会给出任何输出。

这就是我执行脚本的方式

extract.sh '6/30/14 9:03' '6/30/14 9:05' abc_*/SysOut.log

SED可以使用多个文件,或者问题在于UNIX,在将文件作为参数传递

方面存在限制

在这方面有任何帮助吗?

1 个答案:

答案 0 :(得分:3)

你的sed命令应该是

sed -n "/$a/,/$b/p" -- "${@:3}"

注意如果你没有使用Bash,你可以在运行sed之前先调整这些参数:

shift 2
sed -n "/$a/,/$b/p" -- "$@"