using awk to extract text between two constant strings


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting using awk to extract text between two constant strings
# 1  
Old 02-04-2008
using awk to extract text between two constant strings

Hi,

I have a file from which i need to extract data between two constant strings.
The data looks like this :

Line 1 SUN> read db @cmpd unit 60
Line 2 Parameter: CMPD -> "C00071"
Line 3
Line 4 SUN> generate
Line 5 tabint>ERROR: (Variable data)


The data i need to extract is Line 2 but only when Line 1 is "SUN> read db @cmpd unit 60"
and Line 5 is "tabint>ERROR:"

The following cant print Line 2, moreover i am specific that my start and end string belong to line i and i+4.

awk '/SUN> read db @cmpd unit 60/,/tabint>ERROR/ {print}' database_energy.out > tf4

Any help will be greatly appreciated.

-Manali
# 2  
Old 02-04-2008
In other words what i want to do is the following:

if row number "i" = /SUN> read db @cmpd unit 60/
and row number "i+4" = /tabint>ERROR:/
print row number "i+1"
# 3  
Old 02-04-2008
IF the file REALLY has "Line 1", etc. in it:
Code:
awk ' arr[$1 $2]=$0
       if(arr[$1 $2]=="Line5"  &&
          arr["Line1"]=="SUN> read db @cmpd unit 60" &&              
          arr["Line5"]=="tabint>ERROR:")
          {
              print arr["Line2"]
           }
         ' inputfilename

The arr[$1 $2] concatenates the two fields, "Line 1" becomes "Line1"
# 4  
Old 02-04-2008
I'm sorry i wrote those Line numbers to explain what i wanted to do.
What i would like to do is

if row number "i" = /SUN> read db @cmpd unit 60/
and row number "i+4" = /tabint>ERROR:/
print row number "i+1"
# 5  
Old 02-04-2008
Try this:

Code:
awk '
/^SUN> read db @cmpd unit 60/ || c {
  c++
  if(c==2) {
    var=$0
  }
  if(c==5 && /^tabint>ERROR:.*/) {
    print var
    c=0
  } 
}' file


Regards
# 6  
Old 02-04-2008
Code:
awk '/SUN> read db @cmpd unit 60/ {c = 3; getline; s = $0 }
!c-- && /tabint>ERROR:/ { print s }' input

Use nawk or /usr/xpg4/bin/awk on Solaris.
# 7  
Old 02-04-2008
Quote:
Originally Posted by mjoshi
Hi,

I have a file from which i need to extract data between two constant strings.
The data looks like this :

Line 1 SUN> read db @cmpd unit 60
Line 2 Parameter: CMPD -> "C00071"
Line 3
Line 4 SUN> generate
Line 5 tabint>ERROR: (Variable data)


The data i need to extract is Line 2 but only when Line 1 is "SUN> read db @cmpd unit 60"
and Line 5 is "tabint>ERROR:"

The following cant print Line 2, moreover i am specific that my start and end string belong to line i and i+4.

awk '/SUN> read db @cmpd unit 60/,/tabint>ERROR/ {print}' database_energy.out > tf4

Any help will be greatly appreciated.

-Manali
Code:
[n]awk '/SUN> read db @cmpd unit 60/,/tabint>ERROR:/ {
     if (last_line == "SUN> read db @cmpd unit 60")
        print 
     last_line = $0
}' file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract text between two strings

Hi, I have a text like these: ECHO "BEGGINING THE SHELL....." MV FILE1 > FILE2 UNIQ_ID=${1} PARTITION_1=`${PL}/Q${CON}.KSH "SELECT ....." PARTITION_2=`${PL}/Q${CON}.KSH "SELECT ........" ${PL}/Q${CON}.KSH "CREATE ...." IF .... ....... I would like to extract only text that only... (4 Replies)
Discussion started by: mierdatuti
4 Replies

2. Shell Programming and Scripting

Extracting text between two constant strings

Hi All, I have a file whose common patter is like this: .I 1 .U 87049087 .S Some text here too .M This is a text .T Some another text here .P Name of the book .W Some lines of more text. This text needs to be extracted. .A more text goes here too .I 2 (2 Replies)
Discussion started by: shoaibjameel123
2 Replies

3. Shell Programming and Scripting

Extract text between two strings

Hi I have something like this: EXAMPLE 1 CREATE UNIQUE INDEX "STRING_1"."STRING_2" ON "BOSNI_CAB_EVENTO" ("CD_EVENTO" , "CD_EJECUCION" ) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 5242880 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "DB1000_INDICES_512K"... (4 Replies)
Discussion started by: chrispaz81
4 Replies

4. Shell Programming and Scripting

How to Extract text between two strings?

Hi, I want to extract some text between two strings in a line i am using following command i.e; awk '/-string1/,/-string2/' filename contents of file is--- line1 line2 aaa -bbb -ccc -string1 c,d,e -string2 line4 but it is showing complete line which is having searched strings. aaa... (19 Replies)
Discussion started by: emresearch
19 Replies

5. Shell Programming and Scripting

Extract text between two specified "constant" texts using awk

Hi All, From the title you may know that this question has been asked several times and I have done lot of Googling on this. I have a Wikipedia dump file in XML format. All the contents are in one XML file i.e. all different topics have been put in one XML file. Now I need to separate them and... (1 Reply)
Discussion started by: shoaibjameel123
1 Replies

6. UNIX for Advanced & Expert Users

bash/grep/awk/sed: How to extract every appearance of text between two specific strings

I have a text wich looks like this: clid=2 cid=6 client_database_id=35 client_nickname=Peter client_type=0|clid=3 cid=22 client_database_id=57 client_nickname=Paul client_type=0|clid=5 cid=22 client_database_id=7 client_nickname=Mary client_type=0|clid=6 cid=22 client_database_id=6... (3 Replies)
Discussion started by: Pioneer1976
3 Replies

7. Shell Programming and Scripting

choose random text between constant string.. using awk?

Hallo I have maybe a little bit advanced request.... I need to choose one random part betwen %.... so i have this.. % text1 text1 text1 text1 text1 text1 text1 text1 text1 % text2 text2 text2 text2 text2 % text3 text3 text3 tetx3 % this choose text between % awk ' /%/... (8 Replies)
Discussion started by: sandwich
8 Replies

8. Shell Programming and Scripting

AWK: How to extract text lines between two strings

Hi. I have a text test1.txt file like:Receipt Line1 Line2 Line3 End Receipt Line4 Line5 Line6 Canceled Receipt Line7 Line8 Line9 End (9 Replies)
Discussion started by: TQ3
9 Replies

9. UNIX for Dummies Questions & Answers

Using awk/sed to extract text between Strings

Dear Unix Gurus, I've got a data file with a few hundred lines (see truncated sample)... BEGIN_SCAN1 TASK_NAME=LA48 PDD Profiles PROGRAM=ArrayScan 1.00 21.220E+00 2.00 21.280E+00 END_DATA END_SCAN1 BEGIN_SCAN2 TASK_NAME=LA48 PDD Profiles 194.00 2.1870E+00 ... (5 Replies)
Discussion started by: tintin72
5 Replies

10. Shell Programming and Scripting

using AWK how to extract text between two same strings

I have a file like: myfile.txt it is easy to learn awk and begin awk scripting and awk has got many features awk is a powerful text processing tool Now i want to get the text between first awk and immediate awk not the third awk . How to get it ? its urgent pls help me and file is unevenly... (2 Replies)
Discussion started by: santosh1234
2 Replies
Login or Register to Ask a Question