awk-从多个源分配变量

awk-从多个源分配变量,awk,grep,Awk,Grep,我想打印输出,它是多个文件内容的组合 例如: grep -v 'word' FILE_A | awk -v var1="string1" -v var2="string2" -v var3="string3" '{ print $1 var1 var2 var3}' cat File_B string1 string2 string3 我可以用上面的命令来实现这一点:将特定的字符串分配给变量,并用grep'ed内容打印它。 然而,如果string1/2/3很长,那么分配这么长的单词就

我想打印输出,它是多个文件内容的组合

例如:

grep -v 'word' FILE_A | awk -v var1="string1" -v var2="string2" -v var3="string3"   
 '{ print $1 var1 var2 var3}'
cat File_B
string1
string2
string3
我可以用上面的命令来实现这一点:将特定的字符串分配给变量,并用
grep
'ed内容打印它。
然而,如果
string1/2/3
很长,那么分配这么长的单词就相当复杂了

问题:

如果我要将
string1/2/3
作为单行写入
文件
如何将这些文件行指定为变量

例如:

grep -v 'word' FILE_A | awk -v var1="string1" -v var2="string2" -v var3="string3"   
 '{ print $1 var1 var2 var3}'
cat File_B
string1
string2
string3

为什么不把它全部放在
awk
脚本中,而不仅仅是变量:

$cat script.awk
!/字/{
var1=“string1”
var2=“string2”
var3=“string3longlong”
打印$1,var1,var2,var3
}
$cat文件
单词不匹配
匹配1
单词不匹配
匹配2匹配123
$awk-f script.awk文件
匹配1串1串2串3长
匹配2串1串2串3长

您永远不需要组合
grep
awk

为什么我得到4个相同的输出?即使使用简单的脚本
{var=“string”print var}
我也会得到
string\n string\n
。为什么会发生这种情况?因为输入文件中有4行,并且块
{var=“string”print var}
应用于每一行。