I need to insert varying lines (i.e. these lines are an output of another script) between lines starting with certain fields.
An example to make it more clear.
This is the file where I wanna insert lines:
(save it as "input.txt")
This is the file ("insert.txt") containing the lines that should be inserted:
And this is the script which calls at the end the .awk file "dothis.awk"
Here is dothis.awk
So, basically what I try to do is: I search for the lines starting with "texta" and check if the following line starts either with "textb" or - if there has been a line previously inserted (which can happen) - if this starts with "sec_buttonpress". If I found these lines then the "textins" should inserted.
Actually, an extension to cover all needs would be to check also if the second field in the file "input.txt" contains "1". If so then the line (only fields 2 and 3) to be inserted after should actually replace the fields 2 and 3 of this line.
For some reason, "dothis.awk" is not working: it inserts at the end of teh "input.txt" file always the same 2 fields: containing a 6digit number and a "0".
What am I doing wrong?
Thanks a lot in advance for help and advices!!!
tempestas
Last edited by tempestas; 06-12-2011 at 08:17 AM..
Reason: correcting a file name in the example code
1.- Which file is untitled3.txt?
2.- Try comment a little bit your code to know what you want to do.
3.- Try one awk program instead using several 'sed' & 'awk' commands.
4.- Input file of 'dothis.awk' is 'input.txt' while in the 'awk' program you
search 'texta' and 'textb' fields which are from 'insert.txt' file. Is this
correct?
5.- Paste the output.txt you are looking for.
thanks a lot for your comments! Sorry, if it's not really clear what I meant. I'll try to improve that:
Quote:
Originally Posted by birei
1.- Which file is untitled3.txt?
Sorry, my mistake: it should be called "insert.txt". I changed that in my first post.
Quote:
Originally Posted by birei
2.- Try comment a little bit your code to know what you want to do.
Here the code commented:
Quote:
Originally Posted by birei
3.- Try one awk program instead using several 'sed' & 'awk' commands.
Sorry, but I am a beginner with awk. So some things seem for me at this point easier or more familiar with sed.
Quote:
Originally Posted by birei
4.- Input file of 'dothis.awk' is 'input.txt' while in the 'awk' program you
search 'texta' and 'textb' fields which are from 'insert.txt' file. Is this
correct?
Yes, that's correct.
Quote:
Originally Posted by birei
5.- Paste the output.txt you are looking for.
Here is an example for the "output.txt" file.
It would be even better if lines that contain in $2 the number "1", can be replaced, i.e. only $2 and $3 should be replaced. Like in this case:
instead of:
rather:
I hope it becomes more clear what I would like to do.
Thanks a lot for help!
tempestas
Last edited by tempestas; 06-12-2011 at 08:18 AM..
The example you posted are very long and the lines does not correspond between input file, replacement file , and output file (it looks as if they were screwed).
I mean i don't see the logic that should be followed.
I think you should post a shorter an cleaner example of infile, insert file and output expected so we could
1) quickly understand the logic of formatting
2) provide you a more accurate answer
sorry, I thought the longer examples help to better understand the structure, because the input files are a mess, but they are given to me like that.
I shortened the examples in my former posts. I hope now it becomes more clear what I wanna do.
thanks a lot for your effort! The code seems quite complicated. Actually, I do not understand what is done. Can you explain it a little bit so that I learn something?
And one question: the reason why I explicitly marked not only "texta" but the following line as "textb" is that "texta" and also "textb" can be more than once in the original input file. But they will most likely not appear again in consecutive lines.
As far as I understand you code, it looks only for "texta" and ignores "textb". Is that correct?
Hello all,
I have a large csv file where there are four types of rows I need to merge into one row per person, where there is a column for each possible code / type of row, even if that code/row isn't there for that person.
In the csv, a person may be listed from one to four times... (9 Replies)
Dear Unix Forums,
I am hoping you can help me with a pattern matching problem.
What am I trying to do?
I want to replace multiple lines of a text file (that match a multi-line pattern) with a single line of text. These patterns can span several lines and do not always have the same number of... (10 Replies)
Hi friends,
This is sed & awk type question.
I have a text file which has numbers spread all over the file. I want to sum the series of numbers whenever i find it and produce an output file with the sum. For example
###start of input text file ####
abc
def
ghi
1
2
3
4
kjld
random... (3 Replies)
So the tag for this forum says all newbies welcome...
All I want to do is go through my file and find lines which contain a given string of characters then replace these with a blank line. I really tried to find a simple command to do this but failed.
Here's what I did come up with though:
... (2 Replies)
Hi.. I'm facing a trouble in replacing two blank lines in a file using shell script...
I used sed to search a line and insert two blank lines after the searchd line using the following sed command.
sed "/data/{G;G;}/" filename . In the file, after data tag, two lines got inserted blank lines..... (4 Replies)
Hello Masters,
I have two subtitles file with different language like below
First file :
1
00:00:41,136 --> 00:00:43,900
2
00:00:55,383 --> 00:00:58,477
<i> Ladies and gentlemen,</i>
<i>this is Simon Barsinister,</i>
3
00:00:58,553 --> 00:01:00,521
<i>the wickedest man in the... (8 Replies)
Hi
I would like to add lines to a file at specific locations.
eg: If I have a file containing data...
ABC
DEF
GHIJKLKMNOP
RSTUVWXYZ
and I have a requirement to insert a lines
a) "LINE_FIRST" before first line in the file
b) "LINE_X" before third line in the file
c) "LINE_LAST"... (2 Replies)
Hi folks,
i need to insert the same set of lines between each line
input lines
111111
aaaaaa
333333
output should be
111111
1
2
3
aaaaaa
1
2
3
333333
1 (2 Replies)
How can I insert, say lines 500 - 700 from another file into the current file on the current line (cursor) that I am editing while in vi (AIX).
I know how to insert the entire file but how do you do it when you only need certain lines from a huge file?
I've referenced my Unix Unleash book but... (2 Replies)