从包含另一个文件中存在的关键字的文件中提取行

时间:2017-12-12 05:09:41

标签: linux bash shell awk sed

File1(其中存在的关键字(在第二个逗号之后)用于选择Ex:GOLD,BRO,...)

File2(从这里提取线条)

File1: 
ABC,123,GOLD,20171201,GOLDFUTURE
ABC,467,SILVER,20171201,SILVERFUTURE
ABC,987,BRO,20171201,BROFUTURE

File2:
XYZ,32,RUBY,20171201,RUBY  
XYZ,33,GOLD,20171201,GOLD
XYZ,34,CEMENT,20171201,CEMENT
XYZ,35,PILLAR,20171201,pillar  
XYZ,36,CNBC,20171201,CNBC
XYZ,37,CBX,20171201,CBX
XYZ,38,BRO,20171201,BRO

我想要Linux命令(awk-sed-cat-grep等)来获取输出文件: 这是:

XYZ,33,GOLD,20171201,GOLD
XYZ,38,BRO,20171201,BRO

我在网上找到了命令:

  1. grep -F -f File1 File2
  2. awk 'FNR==NR {a[$0];next} ($NF in a)' File1 File2
  3. awk 'FNR==NR {a[$0];next} ($0 in a)' File1 File2
  4. diff File1 File2
  5. 在第3点。我从File1获取整行以进行比较,有没有办法在逗号后提取关键字?或者有没有办法在第2点的awk命令中插入文件分隔符。

1 个答案:

答案 0 :(得分:0)

请您试着跟随并告诉我这是否对您有帮助。

awk -F, 'FNR==NR{a[$3];next} ($3 in a)' File1  File2