Inner join on two text files

前端 未结 5 2048
陌清茗
陌清茗 2020-11-22 05:06

Looking to perform an inner join on two different text files. Basically I\'m looking for the inner join equivalent of the GNU join program. Does such a thing exist? If not,

5条回答
  •  终归单人心
    2020-11-22 06:02

    Here's an awk option, so you can avoid the bash dependency (for portability):

    $ awk -F'|' 'NR==FNR{check[$0];next} $2 in check' file2 file1
    

    How does this work?

    • -F'|' -- sets the field separator
    • 'NR==FNR{check[$0];next} -- if the total record number matches the file record number (i.e. we're reading the first file provided), then we populate an array and continue.
    • $2 in check -- If the second field was mentioned in the array we created, print the line (which is the default action if no actions are provided).
    • file2 file1 -- the files. Order is important due to the NR==FNR construct.

提交回复
热议问题