列出与awk匹配的模式

问题描述

我有一个文件,其中包含用“:”分隔的模式和消息。

pattern1:First pattern
pattern12:Second pattern
pat1:Short pattern
pat12:Short pattern 2

如果我这样跑:

awk -F: '$1~/pat1/ {print $2}' file

它可以完美过滤并提供输出:

Short pattern
Short pattern 2

但是实际上我想获取与提供的字符串匹配的模式消息。假设我有一个字符串example string with pattern12 substring inside,我希望得到:

First pattern
Second pattern

因为文件中的两个模式与我的字符串匹配。不幸的是,

awk -F: '$1~/example string with pattern12 substring inside/ {print $2}' file

都不是

awk -F: '"example string with pattern12 substring inside"~/$1/ {print $2}' file

为我工作。

有没有一种方法可以使用这些简单漂亮的过滤器来实现此目的,而无需在awk程序主体中移动检查?

现在,我调用bash脚本并将字符串作为参数传递:

script.sh "example string with pattern12 substring inside"

script.sh:

#!/bin/bash
while IFS=: read pattern message
do
    grep -qe "$pattern" <<< $1 && break
done < fie

但是我想使用awk而不是grep,因为它不仅可以同时过滤多个字段,而且还可以算术地过滤多个字段:pattern >= 256

解决方法

是这样吗?:

$ awk -F: '"example string with pattern12 substring inside"~$1 {print $2}' file

输出:

First pattern
Second pattern

如果没有,那么@ RavinderSingh13在上面问的是什么。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...