Using Grep to Multiple Find and Replace
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...
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 ?
2 Answers
grep doesn't replace or modify files. Use sed:
sed -i 's|</head>|link to JS script</head>|' *.html
How 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