好的,我很难过!
我有一个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
<parm1> and <parm2>
是输入参数,因此可能会发生变化。所有其他文本(LINE1,LINE2除外,它们都是可读性)都是标准输出。
我需要通读并将值123456分配给变量。
我尝试过使用正则表达式:
INST_ID=$(tail -5 "$LOG_FILE" | grep -oP "^ *My thing *\ *"<parm1>", inst \"\K[^\"]+")
但它显然不起作用,我正在努力寻找替代方案。我还以为fgrep / grep -f会更好,所以我可以逐行阅读?
由于
答案 0 :(得分:0)
认为这grep
会有所帮助。
grep -o "inst \"[0-9]*\"" | grep -o [0-9]*
答案 1 :(得分:0)
如果日志文件中只有这两行,那么单词“inst”只出现在“123456”之前,那么cnicutar的答案应该有效。你运行什么
VAR =`cat <log_file_path> | grep inst | sed 's/.*inst "\(.*\)".*/\1/'
`
echo $ var