我正在检查awk读取的当前行是否包含我正在使用的一些字符串:
if (/.*abc.*lab.*/)
{
}
但是如果该行中的字符串是例如
[abc ls:lab=123 ....]..
然后正确搜索字符串,但如果该行包含例如
[abc ls:key=xyz xyz. ls:lab=123 ...]..
然后即使匹配.*abc.*lab.*
如果我在搜索时犯了一些错误,有人可以纠正我吗?
答案 0 :(得分:1)
你应该可以使用:
awk '/abc.*lab/ { print $0 }'
模式与整个行的$0
匹配。但是,如果写成:
awk '{if (/.*abc.*lab.*/) print $0}'
或使用更简单的正则表达式:
awk '{if (/abc.*lab/) print $0}'
如果if
中没有{ ... }
,那么awk
会遇到语法问题。
给出这样的数据文件:
[abc ls:lab=123 ....]..
then the string is searched correctly, but if the line contains e.g.
[abc ls:key=xyz xyz. ls:lab=123 ...]..
上面的脚本都产生了:
[abc ls:lab=123 ....]..
[abc ls:key=xyz xyz. ls:lab=123 ...]..