假设有两个文件file1和file2,它们都包含数值,需要在awk中比较它们并输出结果。
可以使用如下代码:
awk 'FNR==NR {arr[$1]; next} $1 in arr {print $1}' file1 file2
上述代码的作用是,首先将第一个文件的数值存入到一个数组中,然后在第二个文件中查找这些数值,如果存在则输出该数值。
下面是代码的详细解释:
- FNR==NR 表示读取第一个文件 file1 时为真,NR 表示 awk 所处理的记录数(即行数),FNR 表示当前文件的行号。因此这个语句块用于处理 file1 中的行。
- {arr[$1]; next} 表示将第一个文件的数字存储到一个数组中,$1 表示第一个字段。next 命令用于跳过当前行的其它处理并直接读取下一行。
- $1 in arr {print $1} 表示如果当前行的第一个字段(即 file2 中的数字)存在于数组 arr 中,则输出该数字。
此代码块将会比较两个文件,并输出它们的相同数字。