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}
应用于每一行。