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' | '---------------------------------------'