我必须逐行匹配file1和file2。但是file1的格式如下。如果使用ak命令在file2中使用下面的行进行搜索,则会在'='处出现语法错误时抛出错误。
File1:
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
File2:
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获取总行作为搜索模式,使用以下命令在file2中搜索:
awk "/$line/ {print ;}" file2
这里file1,在file2中找不到第3条记录,所以我需要知道这些差异
我对shell脚本非常陌生,所以请在此建议我。
答案 0 :(得分:0)
这对于comm
来说真的是一个工作,假设您可以对两个输入文件进行排序,但是如果您想使用awk这样的东西可能会根据您未说明的要求执行此操作:
awk 'NR==FNR {file1[NR]=$0; next} $0 != file1[FNR]' file1 file2
答案 1 :(得分:0)
如果我理解正确,您想要打印两个文件共有的行。在这种情况下,awk
实际上不是最好的工具。你可以改为做其中一个
comm <(sort file1) <(sort file2)
或
grep -Fxf file1 file2
如果你真的想用awk
来做,你可以试试
awk 'FNR==NR{a[$0]; next} $0 in a' file1 file2