Improve company productivity with a Business Account.Sign Up

x
?
Solved

shell script to recursively search and find/replace text in target files

Posted on 2011-02-16
7
Medium Priority
?
564 Views
Last Modified: 2012-05-11
Hello All,

This is probaably a 1 minute solution for many script maseters, but for me is quite muddy.

Task:
1. Recursively search  all child directories for file WP-CONFIG.PHP
2. Find all "Lines" that begin with define('DB_PASSWORD', 'xxxxxx');   -- note 'xxxxxx' can be any length text.
3. Replace the 'xxxxxxx' text with new text that I would supply as paramter argument upon running the script.
4. Produce a count of the number of times the script found and editied a WP-CONFIG.PHP file.

Thats it.
0
Comment
Question by:Louis Capece
7 Comments
 
LVL 6

Expert Comment

by:de2Zotjes
ID: 34907589
#!/usr/bin/env bash

REPLACE=$1
n=0
for entry in $(find . -name WP-CONFIG.PHP -a -type f); do
    n=$(($n+1))
    sed -e "s/^define\('DB_PASSWORD','[^']*'/define('DB_PASSWORD','$REPLACE'/" -i $entry
done

echo $n

Open in new window


Line 3 takes the first command line argument and puts it in the REPLACE var
Line 5 uses the find utility to locate every file named WP-CONFIG.PHP under the current dir
Line 7 replaces every occurence of ....DB_PASSWORD with the text in REPLACE var
 

0
 
LVL 4

Expert Comment

by:florjan
ID: 34907612
find . -iname "WP-CONFIG.PHP" -print | xargs sed -i 's/oldpass/newpass/g'
grep -lr "newpas" .

Open in new window

Make sure to escape(backslash\ any special characters) and to tell me if there is any other line same as password so I can adapt the script/
0
 
LVL 31

Expert Comment

by:farzanj
ID: 34907632
1.  ls -R WP-CONFIG.PHP
or  find . -type f -name WP-CONFIG.PHP
2. grep -R '^define(\'DB_PASSWORD\''

3.  sed "s/xxxxx/yyyyy/g" $1
4.  #Before modifying the script
     Precount=$(grep -c "XXXX" WP-CONFIG.PHP)
     #Edit using above
     Postcount=$(grep -c "XXXX" WP-CONFIG.PHP)
     Edited=$(( Precount - Postcount ))
0
Build your data science skills into a career

Are you ready to take your data science career to the next step, or break into data science? With Springboard’s Data Science Career Track, you’ll master data science topics, have personalized career guidance, weekly calls with a data science expert, and a job guarantee.

 

Author Comment

by:Louis Capece
ID: 34909944
Could someone please confirm this, I suspect there may be confusion...
the existing password is NOT known, it could be anything that is beween the single quotes.

In a nutshell, what I an trying to do is alter all the WP_CONFIG.PHP "Define Password" statement to a single value....the existing passwords are all different.
0
 
LVL 12

Expert Comment

by:tel2
ID: 34910642
Hi louiscapece,

de2Zotjes's solution seems to cater for any existing password.
But I don't think it caters for the space you have between the comma and the 'xxxxxx' (old password).  To make it flexible in this regard (i.e. to handle 0 or more spaces there), maybe change line 7 to something like this:
    sed -e "s/^define\('DB_PASSWORD', *'[^']*'/define('DB_PASSWORD', '$REPLACE'/" -i $entry
0
 
LVL 4

Accepted Solution

by:
florjan earned 2000 total points
ID: 34910645
find . -iname "WP-CONFIG.PHP" -print | xargs sed -i "s/('DB_PASSWORD', '.*')/('DB_PASSWORD', 'newpassword')/g"
grep -lr "newpas" .

Open in new window

0
 
LVL 4

Expert Comment

by:florjan
ID: 34910669
I have tested script from my last post on gentoo on my test wp install in bash and it worked.
0

Featured Post

Build your data science skills into a career

Are you ready to take your data science career to the next step, or break into data science? With Springboard’s Data Science Career Track, you’ll master data science topics, have personalized career guidance, weekly calls with a data science expert, and a job guarantee.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension . This reminded me of questions that come up here at EE along the lines of, "How can I tell the type of file from its cont…
Welcome back to our beginners guide of the popular Unix tool, cron. If you missed part one where we introduced this tool, the link is below. We left off learning how to build a simple script to schedule automatic back ups. Now, we’ll learn how to se…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

608 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question