了解AWK中的搜索模式?

时间:2013-08-22 18:18:55

标签: linux bash unix awk

我正在阅读教程的第2.3节 - http://www.vectorsite.net/tsawk_2.html#m2

  

Awk的字符串搜索功能还有很多。搜索可以   被限制在输入行中的单个字段。

例如:

$1 ~ /^France$/

没有代码显示此模式的工作原理。有人可以告诉我这条线是如何使用的以及它是如何工作的吗?

2 个答案:

答案 0 :(得分:5)

当然!

  

$ 1~ / ^法国$ /

使用以下awk命令:

awk '$1 ~ /^France$/ { print }'

以下输入

France 1
France1 2
france 3
- France 4
France - 5

输出

France 1
France - 5

$1是第一个字段的值; awk的默认设置是使用空格分隔的字段进行拆分。 /^France$/是与精确字符串France匹配的正则表达式(使用字符串开头和字符串结尾锚点^$)。最后,~是一个二进制字符串运算符,它通过右侧的正则表达式匹配左侧。

请注意,正则表达式可以表示为普通的带引号的字符串,也可以在变量中给出,但是当表达式内联时,“/.../”语法更好,因为它更明显,并且不需要额外的转义当表达式中有引号或反斜杠时,字符串会导致。

当然,该特定表达式会更简单为$1 == "France"

让我知道一个更复杂的例子是否会有所帮助。

答案 1 :(得分:1)

要学习awk,请阅读有效Awk编程,第三版作者Arnold Robbins。不要依赖随机网站获得准确或有用的信息。