I have an index.html file that I need to be able to modify depending on if its secure or unsecure, can I use cat and or grep in a script to modify text in it?


12 Years
Discussion Span
Last Post by chrchcol

cat piped to grep can check to see if a line of text contains a string. the sed command is more suited for editing files. Sed is a good utility to modify text. Sed is good at deleting strings and also substituing one string for an other.


Can it be automated? into a script

Anyway you can give an example of the syntax


for this example I will take the file an an input and make a new file as its output

sed -i "s/string/new_string/g"

this code will substitute all instances of 'string' with 'new_string'

if you want to delete all instances of string you would just substiture it with nothing

sed -i "s/string//g"

it would be very easy to automate it into a script


tried it and I can't quite get it right

Lets say I created a file called "hello" With the words username and password in it.

I wanted to change username to user

would I use

sed hello -i "s/username/user/g" ???????


ahh now I see correct syntax is

sed -i "s/text/changedtext/g" filename

Thank you for all your help



if hello is the name of the file put it at the end. using the -i option changes your original file. You would want to keep your original unchanged, so it can be used as a template.

this would change the original

sed -i "s/username/user/g" hello

a better way would be to make a new file

sed "s/username/user/g" hello > newhello

or this line does the same thing

cat hello | sed "s/username/user/g" > newhello

the g means global. if you do not use the g, only the first instance of the sting is changed. In you case, you would not need the g

sed "s/text/sub_text/"

Since the forward slash has special meaning, you need to escape it. By placing a backslash in front of the forward slash, all of the special meaning is removed(escaped). for example my home directory is /home/shane. I will do an example that works

shane@mainbox ~ $ pwd | sed "s/\/home\/shane/\/new\/directory/"

If you use code tags your post would be a little easier to read. Try this

pwd | sed "s/\/home\/httpd\/vusers\/*.domain.com\/web_users\/chris2/\/chris.domain.com\/web_users\/chris2/g"

I am not sure, but the "*" might not wotrk with sed. let me know if this works


That one did not error out at all. However the output from it was



This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.