File1中
3.5 22
5. 23
4.2 42
4.5 44
文件2
3.5
3.7
5.
6.5
期望的输出:
3.5 22
5. 23
我更喜欢使用'awk'。
答案 0 :(得分:2)
此oneliner
应该执行技巧:
awk 'NR==FNR{a[$1];next}$1 in a' file2 file1
<强>解释强>
NR==FNR{a[$1];next}
:将keys
礼物存储在file2
。
$1 in a
:如果key
中的当前file1
位于a
我们存储keys
file2
的位置,则会打印该行。
来自docs:
如果引用没有记录值的数组元素,则为该值 引用的是&#34;&#34;,null ... 这样的引用自动 创建该数组元素,使用空字符串作为其值。
注意强>
正如@JonathanLeffler在评论中解释$1 in a
代替a[$1]
,以避免在a
无法匹配时创建元素。
注2
由于@EdMorton点a[$1]++
会浪费处理器周期。我们只需使用a[$1]
初始化 associative 数组。
原始代码
awk 'NR==FNR{a[$1]++;next}a[$1]' file2 file1
谢谢 Jonathan &amp;&amp; 版