Sponsored Content
Top Forums Shell Programming and Scripting Global search and replace across multiple files Post 302468536 by Scott on Wednesday 3rd of November 2010 05:46:05 AM
Old 11-03-2010
There are a number of problems with sanjaypraj's script:

Code:
#/bin/ksh             # Missing ! after #
for k in `find ./ -type f| xargs grep oldstring  # No closing backquote, and expect an Arg list too long error
do
   filename=`echo $k | cut -d ":" -f1`  # not sure why this is needed
   sed 's/oldstring/newstring/g' $filename >${filename}.bk
   mv ${filename}.bk ${filename}  # This is dangerous
done

Code:
find . -type -f | while read FILE; do
  sed "s/oldstring/newstring/g" $FILE > $FILE.new
  cp -f $FILE.new $FILE && rm $FILE.new
done

Code:
# This is dangerous.  Suppose your "sed" updates an important system file...
$ ls -l rc.tcpip
-rwxrwxr--    1 root     system         6610 Oct 23 09:33 rc.tcpip
 
$ sed "s/old/new/g" rc.tcpip > rc.tcpip.new
 
$ ls -l rc.tcpip.new
-rw-r--r--    1 root     system         6610 Nov 3 10:49 rc.tcpip.new
 
$ mv rc.tcpip.new rc.tcpip
 
$ ls -l rc.tcpip
-rw-r--r--    1 root     system         6610 Nov 3 10:49 rc.tcpip

And when you reboot three months later....

Last edited by Scott; 11-03-2010 at 07:06 AM.. Reason: cut & paste error; typo
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Global search ok...but replace?

Gurus, I have in my /tmp directory 26 files "filea", "fileb"..."filez". Each file contains the name of a database 'dwora' at many, many places within each file. My boss decided to change the name of the db so I need to do (what i'd call) a global search&replace of that string in all my... (0 Replies)
Discussion started by: alan
0 Replies

2. Shell Programming and Scripting

Need to search and replace in multiple files in directory hierarchy

Hello all I need to search and replace in multiple files that are in directory hierarchy Im using the : find . -name "*.dsp" -print | xargs grep -n -o Test.lib" , I like to be able to replace every instance of Test.lib with empty space . how can I write one liner that does this ? (3 Replies)
Discussion started by: umen
3 Replies

3. Shell Programming and Scripting

Perl: Global Search and replace

I have a file where the rows correspond to individuals and the columns are about 106 variables. Each variable is coded as either ACGT, and "missing" is coded as blank. This is a tab delimited file. I'm trying to replace all blanks (" ") with 0. The simple script I have is only replacing some of the... (3 Replies)
Discussion started by: epi8
3 Replies

4. Shell Programming and Scripting

Complex Search/Replace Multiple Files Script Needed

I have a rather complicated search and replace I need to do among several dozen files and over a hundred occurrences. My site is written in PHP and throughout the old code, you will find things like die("Operation Aborted due to....."); For my new design skins for the site, I need to get... (2 Replies)
Discussion started by: UCCCC
2 Replies

5. Shell Programming and Scripting

Search & Replace in Multiple Files by reading a input file

Hi, I have a folder which contains multiple config.xml files and one input file, Please see the below format. Config Files format looks like :- Code: <application name="SAMPLE-ARCHIVE"> <NVPairs name="Global Variables"> <NameValuePair> ... (0 Replies)
Discussion started by: haiksuresh
0 Replies

6. Shell Programming and Scripting

String search and replace in multiple files.

Hello. I have five config files in /etc that I want to edit in one click for testing. I would like to make a script like this : #!/bin/bash # a_file="/etc/file_1" src_str="src_string_1" rpl_str="rpl_string_1" calling_sed_or_awk_or_whatelse $a_file search_for_all $src_str replace_with... (4 Replies)
Discussion started by: jcdole
4 Replies

7. Shell Programming and Scripting

perl: search replace in multiple files

When I use special characters the command to replace multiple files with a string pattern does nt work. ---------- Post updated at 12:33 PM ---------- Previous update was at 11:38 AM ---------- This works perl -pi -e 's/100/test/g' * This does nt work perl -pi -e 's... (1 Reply)
Discussion started by: w020637
1 Replies

8. Shell Programming and Scripting

Search & Replace: Multiple Strings / Multiple Files

I have a list of files all over a file system e.g. /home/1/foo/bar.x /www/sites/moose/foo.txtI'm looking for strings in these files and want to replace each occurrence with a replacement string, e.g. if I find: '#@!^\&@ in any of the files I want to replace it with: 655#@11, etc. There... (2 Replies)
Discussion started by: spacegoose
2 Replies

9. Shell Programming and Scripting

Search and Replace in multiple files

Hello, I have hundreds of files in which I need to change email address. Here is what I am trying to do: 1. All text files are in a directory "a" 2. In the text file, I want to replace email address for preparer. All these lines start with {{PreparerEmail and end with }}. The email... (3 Replies)
Discussion started by: cartrider
3 Replies

10. Shell Programming and Scripting

Search/Replace in multiple files recursively

Hi there, I am using AIX and trying to search and replace a string with another string in multiple files in different directories. I wanted to search replace in steps so I don't change all of the instance anywhere in the server at once, minimizing impact. STEP 1: -------- I first searched... (5 Replies)
Discussion started by: zaino22
5 Replies
SOELIMINATE(1)						    BSD General Commands Manual 					    SOELIMINATE(1)

NAME
soeliminate -- interpret .so directive in manpages SYNOPSIS
soeliminate [-Crtv] [-I dir] [files ...] DESCRIPTION
soeliminate reads files lines by lines. If a line starts by: ``.so anotherfile'' it replace the line by processing ``anotherfile''. Otherwise the line is printed to stdout. -C Compatibility with GNU groff's soelim(1) (does nothing). -r Compatibility with GNU groff's soelim(1) (does nothing). -t Compatibility with GNU groff's soelim(1) (does nothing). -v Compatibility with GNU groff's soelim(1) (does nothing). -I dir This option specify directories where soeliminate searches for files (both those on the command line and those named in ``.so'' directive.) This options may be specified multiple times. The directories will be searched in the order specified. The files are always searched first in the current directory. A file specified with an absolute path will be opened directly without performing a search. SEE ALSO
mandoc(1), soelim(1) BSD
November 22, 2014 BSD
All times are GMT -4. The time now is 06:27 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy