Replace a string within a file.. with help of positions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace a string within a file.. with help of positions
# 8  
Old 03-03-2011
Hi Chubler,

As said.. my sed does not have -E option.
Is there any other way of acheiving the same... May be multiple steps, is also fine..

Thanks in Advance..
Gopi
# 9  
Old 03-03-2011
Well, this sort of thing can be done with awk script but it's probably going to be a little more maintainable if you stick with sed.

The -E option was really just to allow us to say .{150} without -E we are stuck putting 150 dot characters is it's place.

You could do this quite easily in vi with 150i.<ESC>, but this is pretty bad form and I recon it's worth the overhead to build an environment var with this string of 150 dots in it, let's call it D150:

Code:
D150=$(print "%150s" "" | tr " " ".")
sed 's/^\('$D150'.*\)    \([^ ]\)/\18251\2/' infile

The above script will work in most shells (except probably csh). If your doing a few of these sorts of things in the 1 script you could even write a function to fill n dots:

Code:
function filldot {
    printf "%$1s" "" | tr " " "." 
}
sed 's/^\('$(filldot 150)'.*\)    \([^ ]\)/\18251\2/' infile


Last edited by Chubler_XL; 03-03-2011 at 07:00 PM.. Reason: Fix typo
# 10  
Old 03-03-2011
Hi,

I tried the code snippet... it gives me diffrent output...
I just had a file with two rows, and uploaded the result....

Actually i'm trying the code for position before 23... but it changes in '475' position... so i did not try for replacing in other positions....

Hope the screenshot helps you to identify the problem..

Thanks,
Gopi
Replace a string within a file.. with help of positions-image001jpg
# 11  
Old 03-03-2011
Yes I see the issue, the .* part is matching too much, try this:

Code:
sed 's/^\('$D150'[^ ]* *\)    \([^ ]\)/\1!!!!\2/' infile

# 12  
Old 03-04-2011
Hi,

Now a little different behavior... Please see the attached screenshot....
Hope it helps you....

Thanks in Advance
Gopi
Replace a string within a file.. with help of positions-image003jpg
# 13  
Old 03-06-2011
This is what the code is supposed to do: from possition 117 search forwards to find next non-space with 4 or more spaces in front of it, and replace the last 4 spaces with 8251.

replaced as below
Code:
000000(other-non-spaces)         999
000000(other-non-spaces)     8251999

I assume you wanted to replace 00000000000.00 with 00000008251.00 in which case you would need something like this:

Code:
sed 's/^\('$D150'[^0]*0*\)0000\.00/\18251.00/' infile

This User Gave Thanks to Chubler_XL For This Post:
# 14  
Old 03-07-2011
Thanks a lot... For your time.... Made it work...

Gopi
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace specific positions in a file

I have a fixed-length positional file. I am trying to replace content of position 4-13 (length=10) with xxxxxxxxxx. Sample 2 rows in this file: H0187459823 172SMITH, JOE H0112345678 172DOE, JANE In this example 87459823 (from 1st line) and 12345678 (from 2nd line) (both in position... (3 Replies)
Discussion started by: Diver181
3 Replies

2. Shell Programming and Scripting

Replace multiple positions in records which match crireria

I have a test file a.txt 001 123 456 789 002 This is just a 001 test data 003 file. I want to clear columns 5 and 6 if the first 3 characters are 001 using awk. I tried following but does not work. Any suggestions? awk 'BEGIN{OFS=FS=""} {if (substr($0,1,3)=="123") $5=" "; $6="... (20 Replies)
Discussion started by: Soham
20 Replies

3. 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

4. UNIX for Dummies Questions & Answers

Replace alphabets from certain positions

Hi all, I have column 2 full of values like HIVE4A-56 and HIVE4-56. I want to convert all values like HIVE4A-56 to HIVE4-56. So basically I want to delete all single alphabets before the '-' which is always preceded by a number. Values already in the desired format should remain unchanged... (4 Replies)
Discussion started by: ames1983
4 Replies

5. Shell Programming and Scripting

sed to replace specific positions on line with file contents

Hi, I am trying to use an awk command to replace specific character positions on a line beginning with 80 with contents of another file. The line beginning with 80 in file1 is as follows: I want to replace the 000000000178800 (positions 34 - 49) on this file with the contents of... (2 Replies)
Discussion started by: nwalsh88
2 Replies

6. Shell Programming and Scripting

if characters from positions 7-15 are matching 219 then replace al

Script for if characters from positions 7-15 are matching with characters from position 211-219 then replace all char from 211-219 with 9 space. Total length of record is 420. Here is the specification of the data in file. Position Field Data Type... (2 Replies)
Discussion started by: lancesunny
2 Replies

7. Shell Programming and Scripting

Replace dashes positions 351-357 & 024-043 with 0 & replace " " if exis with 04 at position 381-382

I need to replace dashes (i.e. -) if present from positions 351-357 with zero (i.e. 0), I also need to replace dash (i.e “-“) if present between position 024-043 with zero (i.e. 0) & I replace " " (i.e. 2 space characters) if present at position 381-382 with "04". Total length of record is 413.... (11 Replies)
Discussion started by: lancesunny
11 Replies

8. Shell Programming and Scripting

replace (sed?) a single line/string in file with multiple lines (string) from another file??

Can someone tell me how I can do this? e.g: Say file1.txt contains: today is monday the 22 of NOVEMBER 2010 and file2.txt contains: the 11th month of How do i replace the word NOVEMBER with (5 Replies)
Discussion started by: tuathan
5 Replies

9. Shell Programming and Scripting

awk script replace positions if certain positions equal prescribed value

I am attempting to replace positions 44-46 with YYY if positions 48-50 = XXX. awk -F "" '{if (substr($0,48,3)=="XXX") $44="YYY"}1' OFS="" $filename > $tempfile But this is not working, 44-46 is still spaces in my tempfile instead of YYY. Any suggestions would be greatly appreciated. (9 Replies)
Discussion started by: halplessProblem
9 Replies

10. Shell Programming and Scripting

Replace 9-16 positions of a text file.

Hi i am having text file like this 40000201040005200213072009000000700000050744820906904421 40069300240005200713072009000000067400098543630000920442 i want to replace 9-16 positions of my txt file...by 1234567...in a single line command i.e 0400052....should be replaced by... (2 Replies)
Discussion started by: suryanarayana
2 Replies
Login or Register to Ask a Question