Regex 如何仅筛选其所有字段满足正则表达式条件的行
我试图在awk中使用一个条件,过滤所有字段都满足正则表达式条件的行,而不是逐个遍历字段。 例如,我想要只包含(是或确定)的行 输入示例:Regex 如何仅筛选其所有字段满足正则表达式条件的行,regex,awk,Regex,Awk,我试图在awk中使用一个条件,过滤所有字段都满足正则表达式条件的行,而不是逐个遍历字段。 例如,我想要只包含(是或确定)的行 输入示例: yes yes yes no no ok nok no yes yes whatever yes yes ok ok yes 示例输出: yes yes ok ok yes 取决于您的分隔符,假设它是空格或制表符,那么您可以执行以下操作: awk '$0~/^((yes|ok)\s+)*(yes|ok)$/{print}' file ps:\s是GNU
yes yes yes no no ok nok
no yes yes whatever
yes yes ok
ok yes
示例输出:
yes yes ok
ok yes
取决于您的分隔符,假设它是空格或制表符,那么您可以执行以下操作:
awk '$0~/^((yes|ok)\s+)*(yes|ok)$/{print}' file
ps:\s
是GNU awk的功能,对于其他版本,您可能需要将其更改为[\t]
而$0~
和{print}
部分实际上是隐式的,我们可以删除它们,只需使用以下方法:
awk '/^((yes|ok)\s+)*(yes|ok)$/' file
取决于您的分隔符,假设它是空格或制表符,那么您可以执行以下操作:
awk '$0~/^((yes|ok)\s+)*(yes|ok)$/{print}' file
ps:\s
是GNU awk的功能,对于其他版本,您可能需要将其更改为[\t]
而$0~
和{print}
部分实际上是隐式的,我们可以删除它们,只需使用以下方法:
awk '/^((yes|ok)\s+)*(yes|ok)$/' file
您不需要
$0~
和{print}
,只需将它们删除即可。您不需要$0~
和{print}
,只需将它们删除即可