Variables 用符号连接的Awk变量

Variables 用符号连接的Awk变量,variables,awk,symbols,Variables,Awk,Symbols,我正在编写一个简单的bash循环,使用awk从文件中获取行。该模式在循环中迭代。在我尝试向awk中用于搜索模式的变量添加符号之前,我可以让程序正常工作 工作程序(第一个搜索词为“cat”) 但是当我尝试添加符号“|”时,“|”) 非常感谢你的帮助 将shell/bash变量传递给awk的正确方法是使用-v选项,如-v varname=“$shell\u var” 来自 awk '/'$varkk'/{print RS $0}' RS=\> FILE1 > FILE2 至 awk -

我正在编写一个简单的bash循环,使用awk从文件中获取行。该模式在循环中迭代。在我尝试向awk中用于搜索模式的变量添加符号之前,我可以让程序正常工作

工作程序(第一个搜索词为“cat”) 但是当我尝试添加符号“|”时,“|”)
非常感谢你的帮助

将shell/bash变量传递给
awk
的正确方法是使用
-v
选项,如
-v varname=“$shell\u var”

来自

awk '/'$varkk'/{print RS $0}' RS=\> FILE1 > FILE2

awk -v regexp="$vark" -v RS='\>' '$0 ~ regexp{print RS $0}'  FILE1 > FILE2
您也可以使用
awk
本身执行此操作

awk  '
      FNR==NR{ arr[$0]; next }
      { for(i in arr)if($0 ~ i){ print RS $0; next} }
     ' pattern_file RS='\>'  FILE1 >file2 

请注意,
|
是awk正则表达式中的一个特殊字符,因此需要对其进行转义。非常感谢您的帮助!为了确保我理解正确,例如使用regexp的示例中指定了“|”和“”?我是否直接为“vark”这样做,以便vark=“|$k>”如果这是显而易见的,那么很抱歉,awk仍然是新手。谢谢!:)@pallascat1492:
-v regexp
只是变量名,您应该如何将shell/bash变量传递给awk
awk -v regexp="$vark" -v RS='\>' '$0 ~ regexp{print RS $0}'  FILE1 > FILE2
awk  '
      FNR==NR{ arr[$0]; next }
      { for(i in arr)if($0 ~ i){ print RS $0; next} }
     ' pattern_file RS='\>'  FILE1 >file2