The
cut
command is in some ways one of those little Unix oddities, because in many ways (although not all of them) it duplicates the functionality of
awk
. Both commands have been part of my Unix landscape for long enough that I don't think about where they come from, but today I wound up curious about
cut
's history.
Awk famously comes from V7 Unix , and is one of the signature Unix programs introduced there (see the Wikipedia entry for more). By contrast,
cut
comes from System III and may have at least partially reached the rest of the world through being part of POSIX (as per the Wikipedia entry ). In the BSD line,
cut
seems to have taken until 4.3BSD-Reno to show up, around 1990, although I think that commercial Unix vendors who used BSD Unix, such as Sun, might have added it earlier.
The motivations for adding
cut
to System III aren't clear, but System III itself is a mix of various other early Unixes, some of which predate V7 ( PWB/Unix started out based on V6, for example). It's possible that
cut
was written for one of these early internal AT&T Unixes that were based on something before V7 and so didn't have awk. Alternately, some of the 'line of business' work that System III and other early Unixes were used for needed to deal with files that had fixed character positions but not useful awk-style whitespace separated field divisions.
(For what it's worth, the System III
cut
manpage specifically mentions 'character positions as on a punched card' as an example for fields.)
PS:
paste(1)
also seems to have first appeared in System III, unsurprisingly.