AWK was preceded by sed (1974). Both were designed
for text processing. They share the line-oriented,
data-driven paradigm, and are particularly suited to
writing one-liner programs, due to the implicit main
loop and current line variables.
I feel like line-oriented programming tools are a silly idea, limiting activities to plain text ASCII. More file formats don't involve new line characters than do, no?
Also, is there any reason to prefer sed over awk, when awk is available? Is awk ever not available?
I don't remember where I read it, but basically - sed can do everything grep does, and more; awk can do everything sed does, and more. There are definitely faster alternatives for more specific use cases, but awk is very general.
I mostly use sed with -i (for in-place editing) when I need a simple operation done quickly on a file without having to think about redirection/etc.
I personally spend a lot of time in the command line working with plain ascii text, and can tell you that awk combined with other commands like find and xargs (or for loops) are my go-to tools. Obviously quick-and-dirty, but powerful and usually get the job done.
grep is a search tool. sed is an editor. awk is a programming language. Describing them as a series of supersets is not invalid, but it's an interesting perspective that I had not considered before!
(B) IIRC, 'gensub' is 'gawk'-specific.
Other than that, awesome stuff. :-D