首页 > 解决方案 > 如何在单个代码行中包含多个搜索字符串

问题描述

我有一个代码在文件中搜索 IN 字符串,然后将这些记录放在我在下面使用的不同文件中:

cat ${ALL_CARDS} | grep -v ' IN ' | awk '{print $1}' > ${NO_EXEC_CARDS}

但是现在我必须包括多个搜索字符串以及像 NE 和 ON 这样的 IN 所以如何在这个代码行中也包括这些

标签: unix

解决方案


cat | grep | awk是一种反模式。此外,仅使用awk会使您的问题变得微不足道:

awk '! /IN/ && ! /ON/ && ! /NE/ {print $1}' "$ALL_CARDS" > "$NO_EXEC_CARDS"

您的 中有一些额外的空格grep,所以也许您想要:

awk '! / IN / && ! / ON / && ! / NE / {print $1}'

awk是为此而精心设计的。它只是读取每一行,如果表达式不匹配“IN”或“ON”或“NE”,则执行该操作。你也可以这样写:

awk '! (/ IN / || / ON / || / NE /) {print $1}'

推荐阅读