substitute a string on a specific position for specific lines
I woud like to substitue a string on a specific position for specific lines
I've got a file and I would like to change a specific string from "TOCHANGE" to "ABCABCAB"
For every line (except 1,2, 3 and the last one) , I need to check between the 9th and the 16th digits.
For the 3rd line, I need to check between the 12th and the 19th digits.
No checks for line 1,3 and the last one.
------------------------
------------------------
example 1:
Only the line 3 and 25 need to be amended
So I would like to get
-------------------------
-------------------------
example 2:
Only the line 25 needs to be amended
So I would like to get
Do you have any idea about how I could do it?
I tried with the sed command but it works on the number of occurence.
I think it could be done via the awk command
Many thanks
Moderator's Comments:
Please use code tags when posting data and code samples!
Last edited by Franklin52; 12-29-2010 at 09:19 AM..
I'm editing my post because I just re-read your post and saw that you are only looking at specific locations on each line. Also, I see that you already tried sed. I believe awk will accept a period for a single character. You could try using a while loop to read each line (while line=$(line)) and checking for a successful status on an awk command like: awk '/^........TOCHANGE/' $line. If that is successful, you could then use a sed (newline = `sed -e 's/TOCHANGE/ABCABCAB' $line`).
My apologies for the confusion, but I hope it helps. By the way, I didn't have a file like this to try. So, these are untried suggestions.
Last edited by ducet8; 12-13-2010 at 01:31 PM..
Reason: wrong information
Thanks for this.
But I was wondering whether or not it could be possible to do it without a loop.
I'd like to use an 'awk' or a 'sed'.
My first thought was to use a sed but it works by occurence.
@ctsgnb
Good way to get 2nd last line no but I guess above script needs to be modified as below:
Ignore line 1,2 and the last one (No change)
For the 3rd line, Replace only if TOCHANGE is in 12th to 19th position.
For other lines (4th - 2nd last), Replace only if TOCHANGE is in 9th to 16th position.
Last edited by anurag.singh; 12-15-2010 at 10:31 AM..
Ooops, you are true, i totally forgot that position case ... here is an even better
- need caret ^ to be exact regarding the position otherwise the \(.....<n_times>\)TOCHANGE could also be match at a position greater than the expected one
- use the $! tip to avoid last line)
- therefore avoid the use of additionnal file opening & line counting of the wc -l
- no need of sed -e option
Last edited by ctsgnb; 12-15-2010 at 11:52 AM..
Reason: forgot the caret ^
I asked this before, but my problem got more complicated. Heres what I am trying to do:
I'm trying to replace a string at a certain location with another string.
Heres the file I'm trying to change:
\E
I want to replace the escape code at the 3rd line, 2nd column with this escape code... (3 Replies)
Greetings.
I don't have experience programing scripts. I need to insert a string in a specific position of another string on another file (last.cfg), for example:
File last.cfg before using script:
login_interval=1800
lcs.machinename=client04
File last.cfg after using script:... (4 Replies)
I am trying to use sed to replace specific characters at a specific position in the file with a different value... can this be done?
Example:
File:
A0199999123
A0199999124
A0199999125
Need to replace 99999 in positions 3-7 with 88888.
Any help is appreciated. (5 Replies)
Hi, guys. I have one question:
How can I search for a line with certain string in it and then insert a string into this line?
For example:
There is a file called shadow, the contents of it are below:
**************************
...
yuanz:VIRADxMsadfDF/Q:0:0:50:7:::... (9 Replies)
Hello All,
I am new to this forum. I am currently facing a problem in manipulating files.
I have two files called old-matter and new-matter
# cat old-matter
abc: this, is a, sample, entry
byi: white board, is white in color
rtz: black, board is black
qty: i tried, a lot
asd: no... (1 Reply)
--------------------------------------------------------------------------------
Have to check in a file that the lines starting with 620 and 705
are ending at same posiotin.
82012345
62023232323
70523949558
62023255454
9999
In the above lines, i have to check the lines starting... (1 Reply)
Hi Folks,
I have a file with all fields defined by byte position, but any field can be empty so I cannot print lines based on a search of specific columns. I need to print all lines of this file where the string of two characters at byte position 100-101 contains the number 27. Any ideas?
... (4 Replies)