我在使用AWK比较一个文件的内容与另一个文件时遇到了一些困难。
FILE1.TXT
142317216-|--|-tree-|-apple-|-|--
150232802-|--|-plant-|-sugar-|-granular|--
153947334-|--|-flower-|-daisy-|-single|--
153188646-|--|-soil-|-earth-|-|--
File2.txt
apple,99817
sugar,75844
daisy,34566
earth,75544
使用“ - ”作为分隔符,我可以从第7列中提取信息。
awk 'BEGIN { FS="-";} {print $7;}' file1.txt
输出
apple
sugar
daisy
earth
我的完整命令检查file1,txt中的column7是否存在于file2.txt。
awk 'BEGIN {FS="-";} NR==FR{a[$1]=$7;next} {FS=",";} $1 in a ' file1.txt file2.txt
获取column7,然后将分隔符更改为“,”并针对变量a检查$ 1。
这显示没有结果,我正在努力理解语法以理解原因。可能有人可能会给我一些指示。
答案 0 :(得分:4)
您没有显示您期望的输出,并且您没有在文件中包含不匹配(或重复)的值,所以它可以猜测,但这可能是您想要的:
$ awk 'NR==FNR{file2[$1];next} {print ($7 in file2 ? "present:" : "absent:"), $7}' FS=',' file2 FS='-' file1
present: apple
present: sugar
present: daisy
present: earth
这种情况是可以在文件列表中设置变量的一个原因 - 更改文件之间的值。
由于你刚刚开始学习awk - 请阅读Arnold Robbins撰写的有效Awk编程,第4版。