我正在阅读本教程的第 2.3 节 - http://www.vectorsite.net/tsawk_2.html#m2
awk 的字符串搜索功能还有更多。可以将搜索限制在输入行中的单个字段。
例如:
$1 ~ /^France$/
没有代码可以显示这种模式是如何工作的。有人可以告诉我如何使用这条线以及它是如何工作的吗?
我正在阅读本教程的第 2.3 节 - http://www.vectorsite.net/tsawk_2.html#m2
awk 的字符串搜索功能还有更多。可以将搜索限制在输入行中的单个字段。
例如:
$1 ~ /^France$/
没有代码可以显示这种模式是如何工作的。有人可以告诉我如何使用这条线以及它是如何工作的吗?
当然!
$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"
.
让我知道一个更复杂的例子是否会有所帮助。
要学习 awk,请阅读 Arnold Robbins 所著的《Effective Awk Programming, Third Edition》一书。不要依赖随机网站来获取准确或有用的信息。