Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 日志提取:SED命令_Regex_Linux_Bash_Unix_Sed - Fatal编程技术网

Regex 日志提取:SED命令

Regex 日志提取:SED命令,regex,linux,bash,unix,sed,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不会展开变量 但是如果我在terminal中运行以下脚本,它可以正常工作 sed -n '/6\/30\/14 9:03/,/6\/30\/14 9:04/p' Syst

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

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

sed -n "/$a/,/$b/p" SystemOut.log;
这里a和b是我作为参数传递的时间戳。当我运行脚本时,SED不会展开变量

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

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'
使用双引号展开变量。像

sed -n "/\"$a\"/,/\"$b\"/p" SystemOut.log;
试着这样做:

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

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

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

仍然是相同的问题。。。它没有扩展此“6/30/14 9:01”,“6/30/14 9:03”作为一个变量发送,默认情况下逗号不是字段分隔符,因此除非您将其设置为1,否则这是一个变量,因此$b不存在于sed语句中。以后尝试在您认为有问题的部分之前回显您的变量,并检查他们是否有任何问题:我纠正了错误。。。但问题依然存在。它仍然没有扩展语句中的变量。另一个问题是=,如果你像我之前的评论中建议的那样回显变量,你会再次选择它。不扩展没有什么错,没有给它任何可扩展的东西。我现在按照建议回显变量。变量a和b按预期给出正确的输出。但不是在SED命令6\/30\/14 9:01 6\/30\/14 9:03中,康多瓦萨比的答案是正确的,并且是我试图帮助您自己理解的。解决了这个问题。谢谢奇怪的是,另一种方法不起作用。我在回显变量,它们给了我预期的输出,但在SED命令中,如果没有$。。。进程替换和等号后的错误空格您只是回显值,根本没有捕获到变量中。