日志提取:SED命令

时间:2014-07-01 06:55:12

标签: regex linux bash unix sed

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

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

sed -n "/$a/,/$b/p" SystemOut.log;

这里a和b是我作为参数传递的时间戳。当我运行脚本时,SED不会扩展变量。

但是,如果我在终端中运行以下脚本,它可以正常工作

sed -n '/6\/30\/14 9:03/,/6\/30\/14 9:04/p' SystemOut.log

任何人都可以提供帮助吗?

我正在运行脚本,如下所示 -

sh extract.sh '6/30/14 9:01' '6/30/14 9:03'

2 个答案:

答案 0 :(得分:2)

尝试这种方式:

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

sed -n "/$a/,/$b/p" SystemOut.log;

为了将命令的输出存储在变量中,可以使用$()

答案 1 :(得分:1)

使用双引号""扩展变量。像

sed -n "/\"$a\"/,/\"$b\"/p" SystemOut.log;