Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

Using Grep to multiple find and replace

Writer 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 ?

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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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