AWK substr

I recently needed to get the first character of a column in a space separated file, and while there are a ton of ways to do this, I figured that Awk’s substr function would make the most sense.

substr(string, start, length): This will return length characters from string starting at position start. start is not zero-based, so 1 will be the first character, 2 will be the second, and so-on. On most systems, 0 still works for the first character, even though 1 will also return the first character.

Let’s start with an example file (example.txt):

1 foo bar
2 Example example2
3 bar foo
4 fizz buzz

To get the first letter of the second column, we can use:

awk '{print substr($2, 1, 1)}' < example.txt

and the output would be:

f
F
b
f