awk从具有不同RS的文件中查找值

时间:2018-05-22 21:18:20

标签: awk sed

我发现了许多使用awk从另一个文件中查找值的示例,但它们都具有相同的FS和RS。我想知道是否有一种方法可以实现FS和RS不同的文件。我知道可以通过预先转换其中一个文件来实现,但我想知道是否有任何优雅的解决方案。

如下所示,搜索file1中的密钥,这些密钥在dn:记录的第二个中找不到。

文件1:

key1,field1_1,field2_1
key2,field1_2,field2_2
key3,field1_3,field2_3

file2的:

dn: key1,xxxxxx
sn: field1_1
l: field2_1

dn: key2,xxxxxx
sn: field1_2
l: field2_2

因此,所需的输出应为key3

1 个答案:

答案 0 :(得分:4)

$ awk 'NR==FNR{keys[$2]; next} !($1 in keys){print $1}' RS='' FS='[[:space:],:]+' file2 RS='\n' FS=',' file1
key3