awk find and replace in multiple files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk find and replace in multiple files
# 1  
Old 05-24-2009
awk find and replace in multiple files

Hi
I use the following code to replace ‘.' with ‘N' in my files and keep both versions.

awk '{ gsub(/\./,"N"); print }' file_0001.txt > path/to/new/dir/file_0001.txt

I need help on how to apply the code to 100 files instead of doing them one file at a time. The files are labeled file_0001.txt to file_0100.txt.
Thanks
joseph
# 2  
Old 05-24-2009
Assuming the only files in the current directory with a filename pattern of file_0*.txt are the ones you wish to make editted copies of then the following would do the trick:

Code:
for FILE in file_0*.txt; do
  awk '{ gsub(/\./,"N"); print }' ${FILE} > path/to/new/dir/${FILE}
done

# 3  
Old 05-24-2009
got an error

Hi
Thank you for your help. I got an error.

here is the code:

#!/bin/bash
#
for FILE in s_7_1_0*_qseq.txt; do
awk '{ gsub(/\./,"N"); print }' ${FILE} > /Users/mydir/${FILE}
done

I named it 'script.sh'

and this is what I did:
chmod +x script.sh
./script.sh

this what I got:

'/script.sh: line 3: syntax error near unexpected token `do
done' '{ gsub(/\./,"N"); print }' ${FILE} > /Users/mydir/${FILE}
# 4  
Old 05-25-2009
The same script is working fine for me.

Open the file in "vi" and check there may some characters like "^M" in the file .
# 5  
Old 05-25-2009
just a ls and reading using a while should do
Code:
ls file* | while read file
do
# apply changes, transformations
done

# 6  
Old 05-25-2009
Quote:
Originally Posted by jdhahbi
Hi
Thank you for your help. I got an error.

here is the code:

#!/bin/bash
#
for FILE in s_7_1_0*_qseq.txt; do
awk '{ gsub(/\./,"N"); print }' ${FILE} > /Users/mydir/${FILE}
done

I named it 'script.sh'

and this is what I did:
chmod +x script.sh
./script.sh

this what I got:

'/script.sh: line 3: syntax error near unexpected token `do
done' '{ gsub(/\./,"N"); print }' ${FILE} > /Users/mydir/${FILE}
Works for me:

Code:
$ cat ./script.sh
#!/bin/bash
#
for FILE in s_7_1_0*_qseq.txt; do
  echo FILE = ${FILE}
  ls -l ${FILE}
  mkdir -p Users/mydir
  awk '{ gsub(/\./,"N"); print }' ${FILE} > Users/mydir/${FILE}
  echo before
  cat ${FILE}
  echo after
  cat Users/mydir/${FILE}
done
$
$ ./script.sh
FILE = s_7_1_00_qseq.txt
-rw-r--r-- 1 tony tony 37 2009-05-25 09:31 s_7_1_00_qseq.txt
before
m.m.m.m.m.m.m.m.m
n.n.n.n.n.n.n.n.n.
after
mNmNmNmNmNmNmNmNm
nNnNnNnNnNnNnNnNnN
FILE = s_7_1_01_qseq.txt
-rw-r--r-- 1 tony tony 37 2009-05-25 09:31 s_7_1_01_qseq.txt
before
m.m.m.m.m.m.m.m.m
n.n.n.n.n.n.n.n.n.
after
mNmNmNmNmNmNmNmNm
nNnNnNnNnNnNnNnNnN
$

I have changed the target directory to be under my urrent directory for the purposes of testing.
# 7  
Old 05-25-2009
Thanks

Thanks to all of you. I got it to work.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Find and replace from multiple files

Hello everybody, I need your help. I have a php site that was expoited, the hacker has injected into many php files a phishing code that was discovered and removed in order to have again a clean code. Now we need to remove from many php files that malware. I need to create a script that find and... (2 Replies)
Discussion started by: ninocap
2 Replies

2. Shell Programming and Scripting

Find and replace in multiple files

Hi, I have php files in main dir and sub dir's as well. I need to find "new mysqli('localhost', 'System', 'xxxxxx', 'System', '3306');" and replace as "new mysqli('localhost', 'unx_sys', 'yyyy', 'unx_sys', '3306');" I tried like: sed 's/new mysqli\(*\)\;$/new... (1 Reply)
Discussion started by: ashokvpp
1 Replies

3. Shell Programming and Scripting

Script to find & replace a multiple lines string across multiple php files and subdirectories

Hey guys. I know pratically 0 about Linux, so could anyone please give me instructions on how to accomplish this ? The distro is RedHat 4.1.2 and i need to find and replace a multiple lines string in several php files across subdirectories. So lets say im at root/dir1/dir2/ , when i execute... (12 Replies)
Discussion started by: spfc_dmt
12 Replies

4. Shell Programming and Scripting

Find and Replace in multiple fields using awk

Hi, Say I have a record "1|22| | |". In which the third and fourth fields are <space> alone. I have to replace the <Space> with <null>. Input: "1|22| | |" --> "1|22|<space> |<space> |" Expected output: "1|22|||" --> "1|22|<null> |<null>|" I tried: echo "1|22| | |" | awk -F... (4 Replies)
Discussion started by: machomaddy
4 Replies

5. UNIX for Advanced & Expert Users

linux find and replace in multiple files

Is there a reason why all of these examples of linux find and replace in multiple files use find and grep to pipe into sed or perl. Why not just use sed or perl directly with something like this? sed -i 's/echo/burnbaby/g' booboo*... (2 Replies)
Discussion started by: cokedude
2 Replies

6. Emergency UNIX and Linux Support

Find, replace, file path in multiple files for Solaris 10

Guys I have a big issue that I need to get fixed ASAP however I can not seem to find a way to do it. We started to use zones with Solaris 10 at work and we moved a zone from a SIT box to a DEV box. Problem is the software we have installed is looking at a /lcl/sit/apps/ path and it needs to look... (5 Replies)
Discussion started by: LRoberts
5 Replies

7. UNIX for Dummies Questions & Answers

how to find and replace strings in multiple files

Hi All, Iam new to unix, I need to find string and replace it in the file name. Like text_123_0.txt,text_123_1.txt,text_123_2.txt. I need to search 123 and replace it with 234 . Is there any unix command to replace them in single command since i have 5 directories. So i need to go each and every... (0 Replies)
Discussion started by: etldeveloper
0 Replies

8. UNIX for Dummies Questions & Answers

Find and replace a string in multiple files

I used the following script cd pathname for y in `ls *`; do sed "s/ABCD/DCBA/g" $y > temp; mv temp $y; done and it worked fine for finding and replacing strings with names etc. in all files of the given path. I'm trying to replace a string which consists of path (location of file) ... (2 Replies)
Discussion started by: pharos467
2 Replies

9. Shell Programming and Scripting

Find and Replace in multiple files (Shell script)

hi guys, Suppose you have 100 files in a folder and you want to replace all occurances of a word say "ABCD" in those files with "DCBA", how would you do it ??? jatin (13 Replies)
Discussion started by: jatins_s
13 Replies

10. Shell Programming and Scripting

Find and replace files in multiple folders

Hi there, I would like to write a script to automate the copy and renaming of files in multiple dir. I have a generic file named s253e.prb and would like to copy this to multiple dir and rename it. Example: Dir is AL-M1 and the prb file name is AL-M1.prb. I would like to be able to... (6 Replies)
Discussion started by: lodey
6 Replies
Login or Register to Ask a Question