Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 正则表达式,用于在bash脚本中从文件中返回字符串的一部分_Regex_Bash - Fatal编程技术网

Regex 正则表达式,用于在bash脚本中从文件中返回字符串的一部分

Regex 正则表达式,用于在bash脚本中从文件中返回字符串的一部分,regex,bash,Regex,Bash,好吧,我被难住了 我有一个bash脚本。我要做的第一件事是运行一个输出到日志文件的命令。结果如下所示: LINE1: ProgOut: Starting my thing <parm1> in this <parm2> ... 2014-01-22 LINE2: 10:21:52.750 NOTIFICATION XYZ-000: My thing "<parm1>", inst "123456", sub 1 has started LINE1:Pro

好吧,我被难住了

我有一个bash脚本。我要做的第一件事是运行一个输出到日志文件的命令。结果如下所示:

LINE1: ProgOut: Starting my thing <parm1> in this <parm2> ... 2014-01-22 

LINE2: 10:21:52.750 NOTIFICATION XYZ-000: My thing "<parm1>", inst "123456", sub 1 has started
LINE1:ProgOut:在这里开始我的工作。。。2014-01-22 
第2行:10:21:52.750通知XYZ-000:“我的东西”,指示“123456”,子1已开始
是输入参数,因此可能会更改。所有其他文本(第1行和第2行除外,它们是为了可读性而存在的)都是标准输出

我需要通读并将值123456赋给一个变量

我尝试使用正则表达式:

INST_ID=$(tail -5 "$LOG_FILE" | grep -oP "^ *My thing *\ *"<parm1>", inst \"\K[^\"]+")
INST\u ID=$(tail-5“$LOG\u FILE”| grep-oP“^*我的东西*\*”,INST\“\K[^\“]+”)
但这显然不起作用,我正在努力寻找替代方案。我还以为fgrep/grep-f会更好,这样我就可以逐行阅读了


谢谢

我想这个
grep
会有帮助的

grep -o "inst \"[0-9]*\"" | grep -o [0-9]*

如果日志文件中只有这两行,因此单词“inst”仅出现在“123456”之前,那么cnicutar的答案应该有效。你跑步时得到什么

var=`
cat|grep inst|sed's/*inst“\(.*\)”*/\1/'
`


echo$var

您的预期输出是什么?我想获得inst的值(即本例中的123456),然后将其用于其他用途。那么为什么您的代码要搜索
我的东西
?这可能是错误的。你会怎么做?下面的任何答案都不起作用吗?Sakthi,帮助你,因为它没有返回任何东西。第一个grep返回inst“123456”,正如您所期望的那样。第二个不会回来。如果我把*取下来,我会在不同的行上打印1,2,3,4,5,6?实际上我在我的机器上测试过。第二个grep也返回了该值#inst-u-id=
tail-n1测试| grep-o“inst\”[0-9]*\“| grep-o[0-9]*
#echo$inst-u-id 123456感谢我的测试。我注意到如果我做[0-9][0-9][0-9][0-9][0-9][0-9][0-9],我会得到回报。但是数字可以是任意长度-因此您使用了*。一定有什么我错过了,但别明白。