我正在阅读教程的第2.3节 - http://www.vectorsite.net/tsawk_2.html#m2
Awk的字符串搜索功能还有很多。搜索可以 被限制在输入行中的单个字段。
例如:
$1 ~ /^France$/
没有代码显示此模式的工作原理。有人可以告诉我这条线是如何使用的以及它是如何工作的吗?
答案 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。不要依赖随机网站获得准确或有用的信息。