使用 awk 行匹配模式

克雷格·林格

该工具awk具有线模式匹配,如

/pattern/ { statements; }

有没有办法将字符串pattern作为变量,用于match表达式等?

或者更好,直接获取:

  • 模式匹配文本
  • 模式匹配长度
  • 如果(groups)模式中有任何匹配组

在中{statements}块?

詹姆斯布朗

如果您使用 GNU awk,而不是/pattern/在条件部分使用,则使用match它的第三个参数,match(string, regexp [, array])您可以访问匹配的文本、起始索引、长度和组:

$ echo foobar | 
gawk 'match($0, /(fo*)(b.*)/, a) {
    print a[0],a[0,"start"],a[0,"length"]    # 0 index refers to whole matched text
    print a[2],a[2,"start"],a[2,"length"]    # 1, 2, etc. to matched groups
}'
foobar 1 6
bar 4 3

有关更多信息,请参阅GNU awk 文档match

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWK:使用字段分隔符连接匹配模式

在两个模式之间使用AND条件的awk在不匹配的行之间丢失

我如何在匹配模式之后打印下一行,然后在再次使用awk出现匹配模式时又停止打印?

使用sed或awk,将行匹配模式移动到文件底部

使用Awk / Sed替换文件中匹配模式的值

使用awk进行匹配和存储,附加模式并分割具有定界符的行

如何使用awk匹配多个变量模式?

使用AWK删除匹配2种模式的列

使用awk的特定字母重复模式匹配

使用awk提取特定模式(如果与前一行匹配)

使用awk的vlookup:如何将组/模式与ID匹配

如何使用awk在每个模式之后进行多次匹配并打印不同数量的行

使用awk过滤行

仅当第一行与模式匹配时,才使用Awk解析文件

比较具有匹配模式的两个连续行,并使用awk删除匹配的第一行

使用grep或awk进行模式匹配

使用awk搜索模式对

使用SED或AWK复制与xml文件中两个不同模式匹配的两行

匹配模式并使用awk或grep打印文件中的相应列

如何使用sed \ awk在文件中查找某些行,然后匹配与其他模式匹配的所有后续行?

使用 awk/sed 在与模式匹配的块中打印文本

使用 awk 进行模式匹配

使用 awk 搜索模式

如何在行组中使用 awk 进行模式匹配

如何使用 awk sed 或 cut 命令在匹配模式后打印一行

使用 awk 列出匹配模式

将模式与另一行匹配后修改一行,然后使用 awk 删除另一行

使用 AWK 在模式(不包括模式)之后删除行

使用 awk 完成模式匹配后如何打印新行