【发布时间】:2015-08-05 13:48:09
【问题描述】:
我需要提取 A 和(B 或 C)模式之间的文本,其中包含 D 模式。
例如我有一个文件,需要提取“proc sql”和(“quit”或“run”)之间的所有内容,其中包含“index”。
proc sql bla-bla-bla 指数=10; 放弃 proc sql bla-bla-bla 放弃; proc sql 指数=10; 跑步需要的输出:
proc sql bla-bla-bla 指数=10; 放弃 proc sql 指数=10; 跑步现在我有这样的解决方案:
perl -0777 -lne 'print for grep /\bindex\b/i, /^proc sql.*?quit.*?\n/mgs' file
但它只在“proc sql”和“quit”(不是“quit”或“run”)之间提取,包含“index”。不知道怎么加OR运算。
如果您能提出替代的 awk/sed/grep 解决方案 - 那就太好了。
【问题讨论】: