using sed to replace a specific string on a specific line number using variables
...
...
for y in `cat output.2`; do
for port in `cat portlist` ; do
echo $y
sed -e "'$y's/Destination Port matches/Dest port match $port/" < output.clean >> output.3
done
done
...
Your code does not seem to match the logic.
The outer for loops through line numbers in output.2 (say, 1,2).
The inner for loops through port numbers (?) in portlist (say, 10,20) for each line number.
So, you essentially have something called a cartesian product here. For the data shown above, you have:
Now, assuming that you have found out a way to determine the line number, the two for loops would work as follows:
(Iteration 1) Put port no. 10 in line 1.
(Iteration 2) Put port no. 20 in line 1, thereby overwriting the port no. put in iteration (1).
(Iteration 3) Put port no. 10 in line 2.
(Iteration 4) Put port no. 20 in line 2, thereby overwriting the port no. put in iteration (3).
As you can see, this does not meet your stated goal of "replacing a specific string on a specific line number".
For this, you need a one-to-one relation between a line number and that specific string (which I assume is the port number).
Given below is a very simple file whose data shows such a relation:
So now, I want to put
- the string "222" in line no. 2,
- the string "555" in line 5,
- the string "666" in line 6 and
- the string "777" in line 7
of the file, say, "output.clean".
In fact, in such a case, you do not even need to search for "Destination port matches". That's because the substitution is based on the line number and not on a string match.
An awk program can be written for the same:
You may want to brush up some concepts here.
- FILENAME stores the name of the file being currently processed.
- FNR is the record number of the current file.
- The first if condition checks if the FILENAME is "output.2" and if so, it creates an associative array with the line number as the key and the port number as its value.
- The else part goes to the "output.clean" file.
- If the current line number of "output.clean" is not a key of the associative array (created earlier), then simply print the line.
- Otherwise, print the string you want with the hash value in it.
- Again, since the associative array must be created before "output.clean" is processed, the order of files has to be correct.
Hi,
I have a huge file & I want to add a specific text in column. But I want to add this text from a specific line number to a specific line number & another text in to another range of line numbers.
To be more specific: lets say my file has 1000 lines & 4 Columns. I want to add text "Hello"... (2 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,
i'm trying to find a way to replace some numbers in a file, but with no luck sofar.
Let's say i have file with three columns,
i would like to find specific line, and replace third column with different number.
search_string="oa11 /home/testfile1.log"
new_number=600
test file... (4 Replies)
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)
Hi,
I have gone through may posts and dint find exact solution for my requirement.
I have file which consists below data and same file have lot of other data.
<MAPPING DESCRIPTION ='' ISVALID ='YES' NAME='m_TASK_UPDATE' OBJECTVERSION ='1'>
<MAPPING DESCRIPTION ='' ISVALID ='NO'... (11 Replies)
I'm trying to update a text file via sed/awk, after a lot of searching I still can't find a code snippet that I can get to work.
Brief overview:
I have user input a line to a variable, I then find a specific value in this line 10th field in this case. After asking for new input and doing some... (14 Replies)
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)
my requirement is,
consider a file output
cat output
blah sdjfhjkd jsdfhjksdh
sdfs 23423 sdfsdf sdf"sdfsdf"sdfsdf"""""dsf
hellow there
this doesnt look good
et cetc etc
etcetera
i want to replace a line of line number 4 ("this doesnt look good") with some other line
... (3 Replies)
Hi,
I'm trying to replace a string with sed, in a text file containing this pattern:
location alpha
value x
location beta
value y
location gamma
value y
location delta
value y
location theta
value z
...
What I want to achieve is:
Find location beta into text file... (1 Reply)