我在脚本中有一个awk命令我正在努力工作,我不明白'a'的含义:
awk'FNR == NR {a [$ 1] = $ 0; next}($ 2 in a)'FILELIST.TXT FILEIN.*> FILEOUT.*
我很擅长使用命令行,所以我只是想弄清楚,谢谢.
a 是一个关联数组.
a[$1] = $0;
Run Code Online (Sandbox Code Playgroud)
将行上的第一个单词$1作为数组中的索引,并将整行存储$0为值.它为第一个文件执行此操作(文件记录号等于整个记录号).该next命令意味着它在处理第一个文件时不处理脚本的其余部分.
对于其余的数据文件,它会评估:
($2 in a)
Run Code Online (Sandbox Code Playgroud)
如果$2找到单词in,则打印该行.这使得存储$0在a相对昂贵的,因为它保存整个文件的复印件(如果有只有一个字的文件的每一行可能是两次).做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)
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |