coreutils: Header lines
8.3.5 Header lines
------------------
The ‘--header’ option can be used when the files to join have a header
line which is not sorted:
$ cat file1
Name Age
Alice 25
Charlie 34
$ cat file2
Name Country
Alice France
Bob Spain
$ join --header -o auto -e NA -a1 -a2 file1 file2
Name Age Country
Alice 25 France
Bob NA Spain
Charlie 34 NA
To sort a file with a header line, use GNU ‘sed -u’. The following
example sort the files but keeps the first line of each file in place:
$ ( sed -u 1q ; sort -k2b,2 ) < file1 > file1.sorted
$ ( sed -u 1q ; sort -k2b,2 ) < file2 > file2.sorted
$ join --header -o auto -e NA -a1 -a2 file1.sorted file2.sorted > file3