Search and Replace in a new FILE.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search and Replace in a new FILE.
# 8  
Old 06-21-2016
Quote:
Originally Posted by MadeInGermany
No it will do all replacements at once; you do not need an outer loop for each pattern.
A drawback is, it will produce a new file even if nothing was changed.
An improvement is: also produce a grep file
Code:
sed -n 's/..*=.*/s=&=g/p' < data.txt > data.sed
sed -n 's/=.*//p' < data.txt > data.grep

find "/tmp/config" -type f -print |
while read file
do
  if grep -f data.grep "$file" >/dev/null
  then
    sed -f data.sed "$file" > "$file"_tmp.replace
  fi
done

---------- Post updated at 13:40 ---------- Previous update was at 13:28 ----------

In case /usr/bin/grep does not take the -f, use /usr/xpg4/bin/grep
This Works !! But, can you tell me how can i add an echo to print the files that got modified ? I can't put the echo after the sed as it logs the same file name multiple times incase the string to be replaced if found in the file multiple times.

So, can you tell me how can i add an echo to print the files that got modified ?
# 9  
Old 06-24-2016
You can print the file name after the sed command!
Nore that each file that is found by the "find" causes one loop cycle i.e. is processed once.
# 10  
Old 06-24-2016
Quote:
Originally Posted by MadeInGermany
You can print the file name after the sed command!
Nore that each file that is found by the "find" causes one loop cycle i.e. is processed once.
That depends on the size of the directories being processed by find, the find file selection criteria, the underlying filesystem type, and the way that updated files are copied or moved back to the original files.

With:
Code:
find . -type f | while read -r path
do	process "$path" > "$path.tmp"
	[ $? -eq 0 ] && mv "$path.tmp" "$path"
done

it is theoretically possible for process to be asked to process a given filename more than once and to also be asked to process whatever that filename was with .tmp appended (possibly also more than once).

However, with:
Code:
find . -type f ! -name '*.tmp' | while read -r path
do	process "$path" > "$path.tmp"
	[ $? -eq 0 ] && cp "$path.tmp" "$path"
	rm -rf "$path.tmp"
done

you are correct. A given filename should only be processed once (and the temp files will never be passed to process).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search and replace in file

hi All i'm new to shell/bash scripting and need help to write a script. question: i have a file of 100's of line, i need to replace all zeros in that file with its respective position, starting from 0 to 23 and remove the remaining sample file is like. Enter the date in the format... (12 Replies)
Discussion started by: sunnu2u86
12 Replies

2. Shell Programming and Scripting

Nested search in a file and replace the inner search

Hi Team, I am new to unix, please help me in this. I have a file named properties. The content of the file is : ##Mobile props east.url=https://qa.east.corp.com/prop/end west.url=https://qa.west.corp.com/prop/end south.url=https://qa.south.corp.com/prop/end... (2 Replies)
Discussion started by: tolearn
2 Replies

3. Shell Programming and Scripting

Search for a string in a file and replace

I have file t1.log Contents of t1.log file Number of records processed: Number of records rejected: Error : xyz .......... abc .......... aaa _] start time : end time : Please let me know how i can remove the contents highlighted in red in the t1.log file. Thanks Sam (3 Replies)
Discussion started by: sam777
3 Replies

4. Emergency UNIX and Linux Support

Search and replace in text file

Hi, I have gigabytes of text files that I need to search for "&" and replace with "&amp". Is there a way to do this efficiently (like sed command)? Hope you could help. Thanks. (17 Replies)
Discussion started by: daytripper1021
17 Replies

5. Shell Programming and Scripting

Optimised way for search & replace a value on one line in a very huge file (File Size is 24 GB).

Hi Experts, I had to edit (a particular value) in header line of a very huge file so for that i wanted to search & replace a particular value on a file which was of 24 GB in Size. I managed to do it but it took long time to complete. Can anyone please tell me how can we do it in a optimised... (7 Replies)
Discussion started by: manishkomar007
7 Replies

6. Shell Programming and Scripting

Help on search and replace in a file

Hi all, The operating system is Solaris 10 I have example line here below I need to change the stat1 to stat2 using a shell script. search for space(" ") and replace with "\ " Stat1 --- /data/Sat Night Stay.txt Stat2 --- /data/Sat\ Night\ Stay.txt Thanks Firestar. (1 Reply)
Discussion started by: firestar
1 Replies

7. UNIX for Advanced & Expert Users

search and replace in a file

I have a file (say file1.txt) and I have to search for a line which has a text replace it and replace another string too in the same line. Eg: file1.txt -------- x='hai' y='world' z='unix' x='hai' y='world' x='hai' z='perl' y='world' z="world" k="junk" b="world" z='perl' x='hai'... (3 Replies)
Discussion started by: ammu
3 Replies

8. Shell Programming and Scripting

search and replace in a file

Hi I have to search & replace column in the file.For example ..below iam having File1. in which 3rd column ...if it is A it should be 'ACT' if P it should be 'PAD' and if it ils D it should be 'DEC' I have to pass column no ,value and to be converted value as variables in to the... (2 Replies)
Discussion started by: satyam_sat
2 Replies

9. Shell Programming and Scripting

Search and replace in file..

Hi All, As I'm working on a Unix script... and the requirement is like, I need to search a word and replace it with the another word... for that i'm using SED command.... can anybody give any other alternate for this...? Thanks Amit (2 Replies)
Discussion started by: Amits
2 Replies

10. UNIX for Dummies Questions & Answers

Search and replace in file

Hi guys, I have one file with duplicate string. I want to replace all the occurance of that string with some other string. How can I do that in vi editor? Malay Maru (3 Replies)
Discussion started by: malaymaru
3 Replies
Login or Register to Ask a Question