Skip to content
Advertisement

Padding Empty Field in Unix Join Operation

I have two files where I want to perform union operation based on 1st column:

file1.txt

JavaScript

file2.txt

JavaScript

The result I hope to get is like this:

JavaScript

where the empty fields of column 1 is padded with “-“.

But why this join command doesn’t work as I expected?

JavaScript

What’s the right way to do it?

Advertisement

Answer

“Important: FILE1 and FILE2 must be sorted on the join fields.” (from this online manpage).

This problem #1. Problem #2 is worse: option -e is badly documented — only works in conjunction with -o, so for example:

JavaScript

where the s prefix name indicated files that I’ve sorted beforehand.

Edit: man join explains the -o switch (so does the online manpage I point to above). It specifies the fields to output (1.2 means 2nd field from file 1, &c), or 0 to mean the join field, and is a comma-separated list. (I didn’t remember the 0 value, actually, so had originally given a clumsier solution requiring awk post-processing, but the current solution is better… and no awk needed!).

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement