Shell 如何在awk中搜索具有特殊字符的模式

Shell 如何在awk中搜索具有特殊字符的模式,shell,awk,Shell,Awk,我必须将文件1与文件2逐行匹配。但文件1的格式如下。如果我使用ak命令搜索文件2中的下一行,则其抛出错误和语法错误位于“=” 文件1: Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102058100 Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02

我必须将文件1与文件2逐行匹配。但文件1的格式如下。如果我使用ak命令搜索文件2中的下一行,则其抛出错误和语法错误位于“=”

文件1:

Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102058100
Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102091000
Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102067000
文件2:

Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102058100
Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102091000
我将file1中的total line作为搜索模式,使用以下命令在file2中搜索:

awk "/$line/ {print ;}" file2
这里是file1,在file2中找不到第三条记录,所以我需要知道这些区别


我对shell脚本非常陌生,因此请就此向我提出建议。

这确实是
comm的一项工作,假设您可以对两个输入文件进行排序,但如果您想使用awk,根据您未说明的要求,类似的操作可能会完成:

awk 'NR==FNR {file1[NR]=$0; next} $0 != file1[FNR]' file1 file2

如果我理解正确,您希望打印两个文件共有的行。在这种情况下,
awk
确实不是最好的工具。你可以做一个

comm <(sort file1) <(sort file2)
如果您真的想使用
awk
,您可以试试

awk 'FNR==NR{a[$0]; next} $0 in a' file1 file2

您为什么不直接执行
grep-vf f2 f1
?您想获得两个文件中常见的行吗?请回答您的问题并向我们展示您所做的工作。你是怎么看这些文件的?哪里定义了
$line
?您得到的确切错误是什么?
awk 'FNR==NR{a[$0]; next} $0 in a' file1 file2