Is there a way to print all records separated by the OFS without typing out each column number.
#Desired style of syntax, undesired result
[kbrandt@glade: ~
Sed equivalent:
$ echo "1 2 3 4" | sed 's/ /:-)/g'
Here's another option with awk:
$ echo "1 2 3 4" | awk '{ gsub(/\s/, ":-)")}1'
This is a variation on the first style:
echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-( "}; {$1=$1; print $0}'
Results:
1 :-( 2 :-( 3 :-( 4
Explanation:
the $1=$1
is to rebuild the record, using the current OFS (you can also see http://www.gnu.org/software/gawk/manual/gawk.html#Changing-Fields)
Update:
(suggested by @EdMorton and @steve) This is a briefer, equivalent version of the awk command, that sets OFS in the command line, and takes advantage of print $0
as the default action:
awk -v OFS=" :-( " '{$1=$1}1'