06-12-2011
Yes it is correct : my code currently ignore textb.
I am not sure to understand your needs so i just gave an attempt based on the given example.
Feel free to adapt it.
---------- Post updated at 12:41 AM ---------- Previous update was at 12:11 AM ----------
BEGIN{i=1} | initialize the index that will later be used to scan file1 |
NR==FNR{p[NR]=$1;a[NR]=$0;next} | from the first file, build 2 "line number indexed" array one holding $1 and one holding the entire line |
/^texta/{x=$2} | while scanning the second file, if texta is found, keep $2 value in variable x |
x&&/^textins/{sub(".*"$3,$3);y=$0}!y{next} | if x is set find the next textins line and erase everything before $3 and save the line in y variable |
{do { | still while scanning the second file, we start scanning the arrays holding file1 that have previously been build |
if(p[i]!=x){ | while $1 from file 1 is different from the currently retainded scanned value of file2 |
print a[i] | just print the line of file1 |
}else{ | otherwise , substitution (as per what i have understood of your requirments) |
split(a[i],b) | the initial line is split in an array b so field can be extracted easier |
print p[i]" \t "y"\t"b[4]" \t "b[5] | print the desired field inserting those extracted from file2 |
x=y=z;delete b;i++;next | reset x and y to empty, delete array b increment i to start next scan of file1 at the next line than the one that have been processed, and reprocess from beginning to populate x and y again with next value from file 2 |
} delete a[i];i++ | delete the printed line from the array an prepare to scan next line |
}while(length(a[i])) | Loop for scanning file1 while line not empty |
}END{do{print a[i];i++}while(length(a[i]))} | since the scan of file 1 only start when x and y have been populated from file2, when the last substitiution has been made (when scanning file2 is finished) it requires an extra loop to finish the display the rest of file1 |
Last edited by ctsgnb; 06-12-2011 at 08:19 PM..
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
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)
Discussion started by: giannicello
2 Replies
2. Shell Programming and Scripting
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)
Discussion started by: Balaji Sukumara
2 Replies
3. Shell Programming and Scripting
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)
Discussion started by: tostay2003
2 Replies
4. Shell Programming and Scripting
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)
Discussion started by: rk4k
8 Replies
5. Shell Programming and Scripting
awk '/<login-module code="com.nlayers.seneca.security.LdapLogin" flag="sufficient">/{p++} /<login-module code="com.nlayers.seneca.security.LdapLogin" flag="sufficient">/ && p==1 {$0="Mulitple lines here\n"$0}1' login-config.xml
In the above awk code inside shell script, i am having problems when... (1 Reply)
Discussion started by: sunrexstar
1 Replies
6. Shell Programming and Scripting
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)
Discussion started by: arjun_arippa
4 Replies
7. UNIX for Dummies Questions & Answers
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)
Discussion started by: Golpette
2 Replies
8. Shell Programming and Scripting
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)
Discussion started by: kaaliakahn
3 Replies
9. Shell Programming and Scripting
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)
Discussion started by: thefang
10 Replies
10. Shell Programming and Scripting
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)
Discussion started by: RalphNY
9 Replies
mv(1) General Commands Manual mv(1)
Name
mv - move or rename files
Syntax
mv [-i] [-f] [-] file1 file2
mv [-i] [-f] [-] file... directory
Description
The command moves (changes the name of) file1 to file2.
If file2 already exists, it is removed before file1 is moved. If file2 has a mode which forbids writing, prints the mode and reads the
standard input to obtain a line. If the line begins with y, the move takes place. If it does not, exits. For further information, see
In the second form, one or more files (plain files or directories) are moved to the directory with their original file-names.
The command refuses to move a file onto itself.
Options
- Interprets all following arguments as file names to allow file names starting with a minus.
-f Force. This option overrides any mode restrictions or the -i switch.
-i Interactive mode. If a move is to supersede an existing file, the system prompts youw with the name of the file fol-
lowed by a question mark. If you type a string that begins with y, the move occurs. If you type any other response,
the move does not occur.
Restrictions
If file1 and file2 lie on different file systems, must copy the file and delete the original. In this case the owner name becomes that of
the copying process and any linking relationship with other files is lost.
See Also
cp(1), ln(1)
mv(1)