awk
More info: Idiomatic awk
General form: condition { actions }
.
condition
: something that evaluates to true/false, e.g.:
1
(always true, always run the action)./pattern/
$0 ~ /pattern/
actions
: when not specified, default action is print $0;
Print multiple lines on the same row:
echo "a\nb\nc" | awk '{printf("%s,",$0);}'
a,b,c,
Change separator when printing fields
Use OFS
+ the "magic" $1=$1
statement. The magic statement is used for
force re-computation of $0.
echo "a b c" | awk 'BEGIN {OFS=",";} {$1=$1} 1'
a,b,c
Or also:
echo "a b c" | awk -v OFS=',' '{$1=$1}1'
Filter lines by regex
/foo.*bar/
Filter lines by line number
awk 'NR <= 10'
Print numbers with thousands separator
Use the printf %\047d
format.
$ echo 1234567 | awk '{printf("%\047d\n", $0);}'
1,234,567
Escape single quote '
Use '\''
.
# Replace ' with whitespace:
awk '{gsub(/'\''/, "", $0); print $0;}'