awk命令中"a"的含义是什么?

Cat*_*err 1 awk

我在脚本中有一个awk命令我正在努力工作,我不明白'a'的含义:

awk'FNR == NR {a [$ 1] = $ 0; next}($ 2 in a)'FILELIST.TXT FILEIN.*> FILEOUT.*

我很擅长使用命令行,所以我只是想弄清楚,谢谢.

Jon*_*ler 5

a 是一个关联数组.

a[$1] = $0;
Run Code Online (Sandbox Code Playgroud)

将行上的第一个单词$1作为数组中的索引,并将整行存储$0为值.它为第一个文件执行此操作(文件记录号等于整个记录号).该next命令意味着它在处理第一个文件时不处理脚本的其余部分.

对于其余的数据文件,它会评估:

($2 in a)
Run Code Online (Sandbox Code Playgroud)

如果$2找到单词in,则打印该行.这使得存储$0a相对昂贵的,因为它保存整个文件的复印件(如果有只有一个字的文件的每一行可能是两次).做a[$1]++或甚至更常规和足够a[$1] = 1.

鉴于FILELIST.TXT

ABC The rest
DEF And more
Run Code Online (Sandbox Code Playgroud)

给定FILEIN.1包含:

Word ABC and so on
Grow FED won't be shown
This DEF will be shown
The XYZ will be missing
Run Code Online (Sandbox Code Playgroud)

输出将是:

Word ABC and so on
This DEF will be shown
Run Code Online (Sandbox Code Playgroud)