用awk比较两个文件

1 awk text-processing

我正在尝试比较两个文件并打印输出,如果它们在某些字段上匹配。

文件1.txt:

bart:29482164591748
 apu:29482164591748
smithers:68468468468464
lisa:68468468468464
maggie:2348578903247548
Run Code Online (Sandbox Code Playgroud)

文件2.txt:

68468468468464:keyboard
68463894578424:user
29482164591748:computer
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:

bart:29482164591748:computer
Run Code Online (Sandbox Code Playgroud)

cha*_*aos 6

经典之作join:

join -t: -1 2 -2 1 -o 2.1,1.1,1.2 <(sort -t: -k1,1 file1) <(sort -t: -k2,2 file2)
Run Code Online (Sandbox Code Playgroud)
  • -t: 指定冒号作为分隔符。
  • -1 2 file1 的连接字段是第二个
  • -2 1 file2 的 join 字段是第一个
  • -o 2.1,1.1,1.2 输出格式。
  • <(...): 两个文件都必须在连接字段 (-k1,1和-k2,2)上排序,-t:指定冒号作为sort.