sed to replace at fixed location


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed to replace at fixed location
# 1  
Old 07-03-2011
sed to replace at fixed location

I have got a text file- each line of 200 characters length. The file is too large in size. It could be 100 MB. The lines begin with any of 0,1,2,3,4,5. I want to replace from 121-131 characters with spaces irrespective of wehatever it is there (the exisitng charatcers could be spaces). And this I want only for the lines starting with 3. Can someone help me how to proceed ?
Code:
1 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBC  CCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
0 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
3 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCC     CCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
3 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCC 6  CDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
5 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
1 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND

Afrer replacing it will look like
Code:
1 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBC  CCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
0 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
3 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBC          CCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
3 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBC            CDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
5 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND
1 THIS IS TO EXPLAIN WITH AN EXAMPLE HOW WE PROCESS THE STANDARD FLOW OF DATA SET     1 AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFfGGGGGGGHHHHEND

# 2  
Old 07-04-2011
why sed? For algorithms or logic awk's much better.

Code:
awk -v FS="" -v OFS="" '/^3 / { for(N=121; N<=131; N++) $N=" "; } 1' < datain > dataout

# 3  
Old 07-04-2011
Thank you very much for your quick response. I am not much comfortable with awk. I used this command but the dataout file appears to be identical. There is no error message either. What I could make out with my very basic knowledge is that it takes input and output field separator as nothing and matches lines starting with3 (^3) and reads chars from 121 to 131 and replaces with space. I could not make out the 1 just before '. Am I doing something wrong or does the command need to be updated ?
# 4  
Old 07-04-2011
Try this.
Code:
 
 
nawk '/^3/ { printf("%s",substr($0,1,120)); for (i=0;i<11;i++)printf(" ");print substr($0,132,length($0)) }' input

# 5  
Old 07-04-2011
Through Sed..
Code:
# Replace * with spaces
sed '/^3/s/\(.\{120\}\)\(.\{11\}\)\(.*\)$/\1*******\3/' inputfile

sed '/^3/s/./*****/121' inputfile # Works with GNU Sed

# 6  
Old 07-04-2011
Simple & quite generic :

Code:
sed '/^3/s/........../          /13' infile

Code:
awk '/^3/{sub(substr($0,121,10),"          ")}1' infile

Use nawk or /usr/xpg4/bin/awk instead of the simple 'awk' if running SunOS/Solaris plateform

Last edited by ctsgnb; 07-04-2011 at 04:41 AM..
This User Gave Thanks to ctsgnb For This Post:
# 7  
Old 07-04-2011
Thank you very much. The awk command works fine. I will try with the sed commands.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace characters at fixed positions

My objective is to replace the 8th, 9th, 10th characters by 1 space per character (total 3 spaces) in a file. I achieved this using following command: sed 's/\(.\)/\1@/7;s/@\(...\)/ /' FileData.txt > FileData_UPDATED.txt Another situation comes when I need to done same but excluding 1st... (5 Replies)
Discussion started by: manishdivs
5 Replies

2. Shell Programming and Scripting

Replace using awk on fixed width file.

All, I used to use following command to replace specific location in a fixed width file. Recently looks like my command stopped working as intended. We are on AIX unix. awk 'function repl(s,f,t,v) { return substr(s,1,f-1) sprintf("%-*s", t-f+1, v) substr(s,t+1) } NR<=10 {... (3 Replies)
Discussion started by: pinnacle
3 Replies

3. Shell Programming and Scripting

Replace and Increment a value in the fixed length file

Hi Everyone, I need to increment a value in the fixed length file. The file has almost a million rows. Is there any easy way to accomplish this. Ex input file ASDSD ADSD 00000 X AAASD ADSD 00000 X SDDDD ADSD 00000 X Ouput ASDSD ADSD 00001 X AAASD ADSD 00002 X SDDDD ADSD 00003 X ... (7 Replies)
Discussion started by: saratha14
7 Replies

4. Shell Programming and Scripting

Deleting lines in a fixed length file where there is a word at specific location

I have a big file having 100 K lines. I have to read each line and see at 356 character position whethere there is a word "W" in it. If it is their then don't delete the line otherwise delete it. There are two lines as one Header and one trailer which should remain same. Can somebody... (5 Replies)
Discussion started by: mohit kanoongo
5 Replies

5. Shell Programming and Scripting

To replace the value of the column in a fixed width file

I have a fixed with file with header & trailer length having the same length of the detail record file. The details record length of this file is 24, for Header and Trailer the records will be padded with spaces to match the record length of the file Currently I am adding 3 spaces in header... (14 Replies)
Discussion started by: ginrkf
14 Replies

6. Shell Programming and Scripting

Using sed to replace a word at specific location

I'm try to change a the prohibit to aix for the lines starting with ssh and emagent and rest should be the same. Can anyone please suggest me how to do that using a shell script or sed passwd account required /usr/lib/security/pam_prohibit passwd session required ... (13 Replies)
Discussion started by: pjeedu2247
13 Replies

7. Shell Programming and Scripting

Replace Date in a fixed length file

Hello All, I working on ksh. I am using fixed length file. My file is like: ======== IXTTIV110827 NANTH AM IKSHIT ABCDEF 0617 IJAY NAND EENIG ZXYWVU 0912 AP OOK OONG PQRSTU100923 NASA DISH TTY ASDFG 0223 GHU UMA LAM QWERT 0111 ATHE SH THEW ======= From 7th to 12 is a date... (4 Replies)
Discussion started by: AnanthaDikshit
4 Replies

8. Shell Programming and Scripting

Replace spaces at a specific Location

Hello All, I have a comma separated file which needs to be loaded to the database. But, I need to trim the white spaces for a specific column before its loaded. Below is the sample line from the input file: 690,690,0575,"01011940","01011940", , , , , ,36720,36722,V2020,V2999,... (6 Replies)
Discussion started by: Praveenkulkarni
6 Replies

9. Shell Programming and Scripting

Replace fixed strings only

Hi All, I just need to do find and replace in a file.... say for eg I have the input file like below: in.txt ##### oldtextoldtext oldtext oldtext oldtext oldtext123 oldtext- oldtext I need to replace oldtext to newtext... my output file should come like below.. out.txt... (9 Replies)
Discussion started by: askumarece
9 Replies

10. Shell Programming and Scripting

sed replace with fixed length

$ cat template s.noName $ sed "s/s.no/1/" template > out $ sed "s/s.no/100/" template >>out $ cat out 1Name 100Name 1 Name 100Name (7 Replies)
Discussion started by: McLan
7 Replies
Login or Register to Ask a Question