作业帮 > 综合 > 作业

为什么使用如下sed命令提取不到指定内容?

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/21 00:09:32
为什么使用如下sed命令提取不到指定内容?
我想提取所有_v或者_f结尾的变量名,具体情况如下所示:
文本内容如下:
EventID_v = enterprise_v .."|" ..generic_trap_v .."|" ..specific_trap_v
if (EventId_v == "dummy case statement") then -- This will prevent syntax errors in case no includes are added below.
命令如下:
sed -n 's/.*[^a-zA-Z0-9_]\([a-zA-Z0-9_]*_[fv]\).*/\1/p' TEXT
得出如下结果:
specific_trap_v
EventId_v
为什么少了一个EventID_v,一直找不到原因.
为什么使用如下sed命令提取不到指定内容?
sed支持的正则表达式是贪婪模式的,它总是与最长的可能长度匹配,而且越是排在前面的通配符优先级越高.就比如:有字符串:uid=100(guest) gid=100(others)
如果用sed 's/.*(\(.*\)).*/\1/' 去匹配就只能得到others.
这个和你第一行只得到specific_trap_v的原因, 你的.*[^a-zA-Z0-9_]是匹配到specific_trap_v之前的空格的.