0

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

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

例如:

$1 ~ /^France$/

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

4

2 回答 2

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$/正则表达式(使用字符串开头和字符串结尾锚点^$)。最后,~, 是一个二进制字符串运算符,它通过右侧的正则表达式匹配左侧。

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

当然,那个特定的表达式会更简单,因为$1 == "France".

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

于 2013-08-22T18:42:38.077 回答
1

要学习 awk,请阅读 Arnold Robbins 所著的《Effective Awk Programming, Third Edition》一书。不要依赖随机网站来获取准确或有用的信息。

于 2013-08-22T18:28:59.183 回答