需要搜索包含特定字符串模式的行

时间:2013-05-03 04:13:24

标签: shell search if-statement awk

我正在检查awk读取的当前行是否包含我正在使用的一些字符串:

if (/.*abc.*lab.*/)
 {
 }

但是如果该行中的字符串是例如

[abc ls:lab=123 ....]..

然后正确搜索字符串,但如果该行包含例如

[abc ls:key=xyz xyz. ls:lab=123 ...]..

然后即使匹配.*abc.*lab.*

,也不会搜索该行

如果我在搜索时犯了一些错误,有人可以纠正我吗?

1 个答案:

答案 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 ...]..