Using Grep to multiple find and replace
Matthew Harrington
I have lets say 90 HTML files and I have to put one new JS script link to head section each of them. Now, i could use some F&R engine of some code compiler
Like:
find: </head>
replace it with: link to JS script</head>But I don't like this solution cause code is mess after that.
I was wondering - how can I use grep to insert new script link right before tag in all .html files in specific dir ?
12 Answers
grep doesn't replace or modify files. Use sed:
sed -i 's|</head>|link to JS script</head>|' *.htmlHow it works
-i tells sed to modify files in place.
The most important sed command is substitute. It has the form s|old|new| where old is a regular expression. Here, we replace </head> with link to JS script</head>.
*.html tells sed to operate on all html files that the shell finds in the current directory.
You can use Vim in Ex mode:
for q in *.html
do ex -sc '%s.</head>.link to JS script&.|x' "$q"
done%select all linesssubstitutexsave and close