The easiest way is to use sed (or perl):
sed -i -e 's/abc/XYZ/g' /tmp/file.txt
Which will invoke sed to do an in-place edit due to the -i
option. This can be called from bash.
If you really really want to use just bash, then the following can work:
while IFS='' read -r a; do
echo "${a//abc/XYZ}"
done < /tmp/file.txt > /tmp/file.txt.t
mv /tmp/file.txt{.t,}
This loops over each line, doing a substitution, and writing to a temporary file (don't want to clobber the input). The move at the end just moves temporary to the original name. (For robustness and security, the temporary file name should not be static or predictable, but let's not go there.)
sed -i '' 's/abc/XYZ/g' /tmp/file.txt
How to implement Google reCaptcha V2
When should I use jQuery's document.ready function?
Find all elements on a page whose element ID contains a certain text using jQuery
How to run cron once, daily at 10pm
Run CRON job every day at specific time
CRON job to run on the last day of the month
How to pass in password to pg_dump?