可以使用正则表达式中的捕获组来匹配多个想要的内容。在 awk 中,可以使用括号来指定捕获组,然后使用 \1、\2、\3 等来引用捕获组中的内容。

例如,假设有一个文本文件,其中包含多个日期,格式为“年-月-日”(例如“2021-05-01”)。我们想要提取每个日期中的年份和月份。

可以使用以下 awk 命令:

awk '{ if ($0 ~ /[0-9]{4}-[0-9]{2}-[0-9]{2}/) { match($0, /([0-9]{4})-([0-9]{2})-([0-9]{2})/, arr); print arr[1], arr[2]; } }' filename.txt

该命令会逐行扫描文件中的每一行,使用正则表达式匹配每个日期。如果匹配成功,就使用 match 函数将匹配结果存入数组 arr 中,并打印出 arr[1](即年份)和 arr[2](即月份)。

注意,该命令中使用了 if 语句来判断每行是否包含日期,这是为了避免在不包含日期的行上执行无用的匹配操作。

awk 如何正则匹配得到多个想要的内容

原文地址: http://www.cveoy.top/t/topic/5NA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录