了解AWK中的搜索模式?

Ste*_*eam 0 unix linux bash awk

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

Awk的字符串搜索功能还有很多.搜索可以约束到输入行中的单个字段.

例如:

$1 ~ /^France$/
Run Code Online (Sandbox Code Playgroud)

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

ash*_*ash 5

当然!

$ 1~/^法国$ /

使用以下awk命令:

awk '$1 ~ /^France$/ { print }'
Run Code Online (Sandbox Code Playgroud)

以及以下输入

France 1
France1 2
france 3
- France 4
France - 5
Run Code Online (Sandbox Code Playgroud)

输出将是

France 1
France - 5
Run Code Online (Sandbox Code Playgroud)

$1是第一个字段的值; awk的默认设置是使用空格分隔的字段进行拆分.的/^France$/是正则表达式匹配的相同字符串法国(使用启动的字符串和结束串锚^$).最后,~是一个二进制字符串运算符,它通过右侧的正则表达式匹配左侧.

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

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

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

  • 你甚至不需要`{print}`. (2认同)