Once I learned Perl I never used awk or sed again. Even for one liners with the -n -p -a options you can easily write one liners in Perl that are concise as those in Awk.
awk '{print $3 ":" $1 " " $2}'
in Perl? perl -nae'printf("%s:%s %s\n",$F[2],$F[0],$F[1])' $ txr -e '(awk ((prn `@[f 2]:@[f 0] @[f 1]`)))'
1 2 3
3:1 2
How about input from a string stream? At the REPL: 1> (with-in-string-stream (*stdin* "1 2 3")
(awk ((prn `@[f 2]:@[f 0] @[f 1]`))))
3:1 2
nil
It pays not to have awk be some some canned global behavior enabled by a command line option. txr -e '(awk (:set ofs "") ((prn [f 2] ":" [f 0] " " [f 1])))'
This is like: awk -v OFS= '{print $3, ":", $1, " ", $2}' perl -aE 'say "$F[2]:$F[0] $F[1]"'