【发布时间】:2025-11-23 18:10:01
【问题描述】:
我正在尝试用另一个文件过滤一个文件。 我有一个文件 d3_tmp 和 m2p_tmp;它们如下:
$ cat d3_tmp
0x000001 0x4d 2
0x1107ce 0x4e 2
0x111deb 0x6b 2
$ cat m2p_tmp
mfn=0x000001 ==> pfn=0xffffffffffffffff
mfn=0x000002 ==> pfn=0xffffffffffffffff
mfn=0x000003 ==> pfn=0xffffffffffffffff
我想打印出 m2p_tmp 中第二列不等于 d3_tmp 第一列的行。 (文件用 \t 和 = 分割)
所以想要的结果是:
mfn=0x000002 ==> pfn=0xffffffffffffffff
mfn=0x000003 ==> pfn=0xffffffffffffffff
但是,在我使用以下 awk 命令后:
awk -F '[\t=]' ' FNR==NR { print $1; a[$1]=1; next } !($2 in a){printf "%s \t 0\n", $2}' d3_tmp m2p_tmp
结果是:
0x000001
0x1107ce
0x111deb
0x000001 0
0x000002 0
0x000003 0
我不确定为什么“$2 in a”不起作用。 有人可以帮忙吗?
非常感谢!
【问题讨论】:
-
有一个尾随空格。
0x000002!=0x000002 -
非常感谢威廉!我明白了!
-
您更改了主题,源文件现在格式不同了。你能在新的请求中讨论吗?否则,如果他们看到提供的解决方案,它会混淆其他人。