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

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 ?

1

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.

1

You can use Vim in Ex mode:

for q in *.html
do
  ex -sc '%s.</head>.link to JS script&.|x' "$q"
done
  1. % select all lines

  2. s substitute

  3. x save and close

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest