Table of Contents
BASH - Files - Replace all occurrences of string within a file
Using awk
Find and replace “dog” or “cat” or “bird” with “pet” on every line and print it out.
awk '{gsub(/dog|cat|bird,"pet");print}' filename
Find and replace “dog” with “cat” in every file with extension txt.
awk '{gsub("dog", "cat", $0); print > FILENAME}' *.txt
Find cat by itself on it's own line even if there are spaces or tabs before it or after it. Replace it with dog. Then print the line.
awk '{sub(/^[ \t]*cat .*$/,"dog");print}' filename
Substitute “dog” with “cat” on lines that don't contain the word “pet”.
awk '!/pet/{gsub(/dog/, "cat")};{print}' filename
Using sed
Change all references of the word dog to cat in the file:
sed -e 's/dog/cat/g' filename
This uses sed to stream edit files, which means change them on the fly.
Find every line that begins with cat. In that line replace furry with nothing. Change the file called filename inline (-i).
sed -i '/^cat/{s/furry//}' filename
Find any line starting with the defined shell variable SHELLVAR (notice ' ' around it so it's evaluated). When the line is found substitute in foo or boo or coo with bar. Edit the file inline.
sed -i '/^'${SHELLVAR}'/s/\(foo\|boo\|coo\)/bar/' filename
Replace spaces in a file with hyphens
sed -i 's/ /-/g' *