在匹配其中一个模式(即“-l”或“--log-file =”)后打印下一个单词。下一个单词可以是空格分隔或等号“=”
cat server.log
server_options='-l /tmp/server_log --log-level=1'
cat server1.log
server_options='--log-file=/tmp/server1_log --log-level=1'
第一个例子的预期输出[仅在查找模式之后的下一个单词而不是直到行尾]: -
/tmp/server_log
第二个例子的预期输出[只有找到模式后的下一个单词而不是直到行尾]: -
/tmp/server1_log
如果指定了“-l”,则打印以下内容
$ grep -Po '^[^#;].*(-l|--log-file) \K.*(?=.)' server.log
/tmp/server_log
但是当指定“--log-file =”时它不起作用
$ grep -Po '^[^#;].*(-l|--log-file) \K.*(?=.)' server1.log
注意: - 可以有多个选项,例如“-a”“ - f”以及-l或--log-file,可以在引号内的任何位置
答案 0 :(得分:1)
您可以使用:
grep -Po "^[^#;].*(-l |--log-file=)\K[^\s']+" server.log
请注意,-l
后跟空格,-log-file
后跟=
此grep
需要gnu grep。