Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何在单个代码行中包含多个搜索字符串_Unix - Fatal编程技术网

Unix 如何在单个代码行中包含多个搜索字符串

Unix 如何在单个代码行中包含多个搜索字符串,unix,Unix,我有一个代码,它在一个文件中搜索字符串,然后将这些记录放在我正在使用的另一个文件中,如下所示: cat ${ALL_CARDS} | grep -v ' IN ' | awk '{print $1}' > ${NO_EXEC_CARDS} 但现在我必须包括多个搜索字符串以及IN like NE&ON,因此如何将这些字符串也包括在此代码行中是一种反模式。此外,只需使用awk就可以让您的问题变得微不足道: awk '! /IN/ && ! /ON/ && !

我有一个代码,它在一个文件中搜索字符串,然后将这些记录放在我正在使用的另一个文件中,如下所示:

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

但现在我必须包括多个搜索字符串以及IN like NE&ON,因此如何将这些字符串也包括在此代码行中是一种反模式。此外,只需使用
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}'

你的问题我不太清楚
grep-v'IN'
打印与'中的模式不匹配的行。是否要获取与这三种模式中的任何一种都不匹配的所有线条?在这种情况下,威廉·珀塞尔的答案是合适的。我对你的问题提出了建议,并补充了更多的细节来说明问题。一些示例输入和预期输出也可能有所帮助。