【发布时间】:2011-05-03 09:57:40
【问题描述】:
我有大约 50 行和 2 个字段的小文件,如下所示
file1
-----
12345 8373
65236 7376
82738 2872
..
..
..
我有大约 100 个以逗号"," 分隔的文件,如下所示:
file2
-----
1,3,4,4,12345,,,23,3,,,2,8373,1,1
每个文件有很多行类似于上面的行。 我想从所有这 100 个文件中提取 第 5 个字段等于第一个文件中的第 1 个字段,并且 第 13 个字段等于第一个文件中的第 2 个字段
我想使用单个文件搜索所有 100 个文件?
如果是单个逗号分隔文件,我想出了以下内容。我什至不确定这是否正确! 但我有多个逗号分隔的文件。
awk -F"\t|," 'FNR==NR{a[$1$2]++;next}($5$13 in a)' file1 file2
谁能帮帮我?
编辑: 上面的命令在单个文件的情况下工作正常。
【问题讨论】:
-
你说,“我什至不确定这是否正确!”如果这里有人给你一个不同的脚本,你怎么知道它是否正确?
-
字段1和5要匹配,字段2和13要匹配,行号也要匹配?换句话说,如果字段匹配,但它们仅在第一个文件的第 1 行和第二个文件的第 42 行匹配,则这些行并不真正匹配。对吗?
-
行可能不匹配。顺便说一句,我测试了我的命令,并且在单个文件的情况下它可以正常工作。
-
它是否适用于多个文件?如果没有,有什么问题?您收到错误消息了吗?
标签: bash shell unix scripting awk