Which UNIX tool to use for text processing?
A short decision flow chart to pick the optimal text processing tool on a UNIX-like system (dowload it as plaintext):
.--------.
| I want |
| to ... |
'--------'
|
v
.-----------.
yes / ... search \ no
.-----( in freeform )-----------------.
| \ text. / |
v '-----------' v
____________ .---------------.
\ \ yes / ... work \ no
) use grep ) .-----( with structured )--------.
/___________/ | \ text. / |
| v '---------------' v
v ___________ .-------------.
.--------. \ \ replace / ... work \ delete
yes / It's \ no ) use awk ) .-----( with freeform )-----.
.------( a simple )-------. /__________/ | \ text. / |
| \ pattern. / | | '-------------' |
v '--------' v v extract v
.-----------------------. .-------------------------. .--------------------------. | .-------------------------.
| grep 'simple pattern' | | egrep 'regex pattern' | | sed 's/search/replace/g' | | | sed '/search pattern/d' |
'-----------------------' | or | '--------------------------' v '-------------------------'
| grep -E 'regex pattern' | .---------------------------------------.
'-------------------------' | sed 's/^.*\(search pattern\).*$/\1/g' |
| or |
| grep -Po 'search pattern' |
'---------------------------------------'
