Script on pattern matching and print lines and export to excel


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script on pattern matching and print lines and export to excel
# 15  
Old 06-29-2009
Quote:
Originally Posted by shaliniyadav
Actually input is first thing what i have posted-----
equip 1 RTF
FULL
BCCH
...

So i have just split my requiremnts instead of directly getting used below line as suggested by you :
Code:
nawk 'c&&c-- {if (c==1||c==0) printf $0 ((c==0)?ORS:OFS);next} /^*RTF$/ {c=6}' myFile

then got output:
Code:
4 0 4 6 9 106 1353 75
4 0 4 6 9 106 1351 80
4 0 4 6 9 106 1352 80
4 0 4 6 9 106 1351 89

So now next task would be to consider this temp output and get the below format:
Code:
4 0 4 6 9 106 1353 75
4 0 4 6 9 106 1351 80 89
4 0 4 6 9 106 1352 80

Hope this clarifies.....

Smilie


So, can we conclude that you have got this from your original input
Quote:
Code:
4 0 4 6 9 106 1353 75
4 0 4 6 9 106 1351 80
4 0 4 6 9 106 1352 80
4 0 4 6 9 106 1351 89

and now want your final output to be...
Quote:
Code:
4 0 4 6 9 106 1353 75
4 0 4 6 9 106 1351 80 89
4 0 4 6 9 106 1352 80

If yes...then probably we are close to helping you
# 16  
Old 06-29-2009
@Rakesh
No actually...
Code:as quoted by you

4 0 4 6 9 106 1353 75
4 0 4 6 9 106 1351 80 89
4 0 4 6 9 106 1352 80
Is already met to get thm in this format using the below code
--------------------------------------

nawk '
c&&c-- {
if (c==1||c==0) {
if (c!=0)
idx=(idx)?idx OFS $0:$0
else
a[idx]=(idx in a)?a[idx] OFS $0:$0
}
next
}
/^*RTF$/ {c=7;idx=""}
END {
for (i in a)
print i OFS a[i]
}' inputfile


---------------------------------------
And consider this input as below:

Inputfile:
add_cell 4 0 4 6 9 106 1311 2
frequency_type = 1
bsic = 2Ah
wait_indication_parameters = 10
ccch_conf = 0
add_cell 4 0 4 6 9 106 1312 2
frequency_type = 1
bsic = 3Ah
wait_indication_parameters = 10
ccch_conf = 0
equip 1 RTF
FULL
BCCH
0 0
0
4 0 4 6 9 106 1311
69
255 255 255 255 255 255 255 255
equip 1 RTF
FULL
BCCH
1 0
0
4 0 4 6 9 106 1312
77
255 255 255 255 255 255 255 255
equip 1 RTF
FULL
NON_BCCH
0 2
0
4 0 4 6 9 106 1311
82
0 0 0 0 0 0 0 0
chg_hop_params cell_number = 4 0 4 6 9 106 1311
0
1
1
80 82 119
45
chg_hop_params cell_number = 4 0 4 6 9 106 1311
1
1
1
869 873
38

So if you see above code wil provide output as below:

4 0 4 6 9 106 1311 69 82
4 0 4 6 9 106 1312 77

But my requirement is :

4 0 4 6 9 106 1311 2AH 69 82 45 38
4 0 4 6 9 106 1312 3AH 77

Hope u got it , Let me know if any queries
# 17  
Old 06-29-2009
Quote:
Originally Posted by shaliniyadav
Hey!!.. I have been trying but not succeeded... See the requirement: Its like need to print the data which is in same line as searching pattern........... Please help in this regard...
Could you show exactly where you're stuck?
# 18  
Old 06-29-2009
@ vgersh99

Just considering to retrieve 2 lines BSIC line and add_Cell line.

---------
nawk '
c&&c-- {
if (c==2 || c==0) {
if (c!=0)
idx=(idx)?idx OFS $0:$0
else
a[idx]=(idx in a)?a[idx] OFS $0:$0
}
next
}
/^add_cell*/ {c=2;idx=""}
END {
for (i in a)
print i OFS a[i]
}' inputfile

------------------------

This is printing only below output:

bsic = 2Ah
bsic = 3Ah

and not wid add_cell
# 19  
Old 06-29-2009
here's something to start with:
Code:
nawk '
acell&&acell-- { if (acell==0) bsic[idx]=$NF }

c&&c-- {
    if (!c) {
       a[idx]=(idx in a)?a[idx] OFS $0:$0
       next
    }
}

$1=="add_cell" {
    acell=2;
    idx=""
    for(i=2;i<NF;i++) idx=(idx)? idx OFS $i : $i
    idxA[idx]
}

$0 in idxA { c=1 ;idx=$0}

END {
  for (i in idxA)
     print i OFS bsic[i] OFS a[i]
}' myFile

# 20  
Old 06-29-2009
Hey ya this is working for the BSIC part well.....

---------- Post updated at 06:17 PM ---------- Previous update was at 05:50 PM ----------

Quote:
Originally Posted by vgersh99
here's something to start with:
Code:
nawk '
acell&&acell-- { if (acell==0) bsic[idx]=$NF }
 
c&&c-- {
    if (!c) {
       a[idx]=(idx in a)?a[idx] OFS $0:$0
       next
    }
}
 
$1=="add_cell" {
    acell=2;
    idx=""
    for(i=2;i<NF;i++) idx=(idx)? idx OFS $i : $i
    idxA[idx]
}
 
$0 in idxA { c=1 ;idx=$0}
 
END {
  for (i in idxA)
     print i OFS bsic[i] OFS a[i]
}' myFile

-------------------------------------

Thanks a lot for your support...I actually tested this code on my original file... Actually getting some extra data also which is not required.....

For ex:Considering the input i have provided i had chosen only required data... In the output for above code you wil fine this data have a look:

InputFile:
add_cell 4 0 4 6 9 106 1311 2
frequency_type = 1
bsic = 2Ah
wait_indication_parameters = 10
ccch_conf = 0
add_cell 4 0 4 6 9 106 1312 2
frequency_type = 1
bsic = 3Ah
wait_indication_parameters = 10
ccch_conf = 0
equip 1 RTF
FULL
BCCH
0 0
0
4 0 4 6 9 106 1311
69
255 255 255 255 255 255 255 255
equip 1 RTF
FULL
BCCH
1 0
0
4 0 4 6 9 106 1312
77
255 255 255 255 255 255 255 255
equip 1 RTF
FULL
NON_BCCH
0 2
0
4 0 4 6 9 106 1311
82
0 0 0 0 0 0 0 0
chg_hop_params cell_number = 4 0 4 6 9 106 1311
0
1
1
80 82 119
45
chg_hop_params cell_number = 4 0 4 6 9 106 1311
1
1
1
869 873
38

4 0 4 6 9 106 1311
1
1
4

4 0 4 6 9 106 1312
2
1
4

So output of your piece of code is :

4 0 4 6 9 106 1311 2Ah 69 82 1
4 0 4 6 9 106 1312 3Ah 77 2

Here 1 is not to be printed in our case..... Which is marked in red in inputFile as well as output


# 21  
Old 06-29-2009
Code:
nawk '
acell&&acell-- { if (!acell) bsic[idx]=$NF }

c&&c-- {
    if (c) v=$0
    else {
       if (NF>1) a[idx]=(idx in a)?a[idx] OFS v:v
       next
    }
}
$1=="add_cell" {
    acell=2;
    idx=""
    for(i=2;i<NF;i++) idx=(idx)? idx OFS $i : $i
    idxA[idx]
}

$0 in idxA { c=2 ;idx=$0;v=""}

END {
  for (i in idxA)
     print i OFS bsic[i] OFS a[i]
}' myFile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Print lines after matching two pattern

would like to print everything after matching two patterns AAA and BBB. output : CCC ZZZ sample data : AAA BBB CCC ZZZ (4 Replies)
Discussion started by: jhonnyrip
4 Replies

2. Shell Programming and Scripting

sed -- Find pattern -- print remainder -- plus lines up to pattern -- Minus pattern

The intended result should be : PDF converters 'empty line' gpdftext and pdftotext?xml version="1.0"?> xml:space="preserve"><note-content version="0.1" xmlns:/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size">PDF converters gpdftext and pdftotext</note-content>... (9 Replies)
Discussion started by: Klasform
9 Replies

3. Shell Programming and Scripting

Want to print out lines with a matching pattern from file

Hi all, I want to search for strings in file1 that can be found in file2 and print out the whole line when matching pattern is found. I have used the below command, but this is not working for me, because it is writing out only the matching patterns from file2, not the whole line. fgrep -o... (2 Replies)
Discussion started by: MonikaB
2 Replies

4. Shell Programming and Scripting

Compare file1 for matching line in file2 and print the difference in matching lines

Hello, I have two files file 1 and file 2 each having result of a query on certain database tables and need to compare for Col1 in file1 with Col3 in file2, compare Col2 with Col4 and output the value of Col1 from File1 which is a) not present in Col3 of File2 b) value of Col2 is different from... (2 Replies)
Discussion started by: RasB15
2 Replies

5. Shell Programming and Scripting

How to print all the lines after pattern matching?

I have a file that contains... Number -------------------- 1 2 3 4 i want to print all the numbers after the hyphen ... (6 Replies)
Discussion started by: ankitknit
6 Replies

6. Shell Programming and Scripting

print range of lines matching pattern and previous line

Hi all, on Solaris 10, I'd like to print a range of lines starting at pattern but also including the very first line before pattern. the following doesn't print the range starting at pattern and going down to the end of file: cat <my file> | sed -n -e '/<pattern>{x;p;}/' I need to include the... (1 Reply)
Discussion started by: siriche
1 Replies

7. Shell Programming and Scripting

perl script print the lines between two pattern

i have a file as below sample.pl parameter1 argument1 argument2 parameter2 I want out as below argument1 argument2 that is , i want to print all the lines between parameter1 & parameter 2. i tried with the following if($mystring =~ m/parameter1(.*?)parameter2/) (2 Replies)
Discussion started by: roopa
2 Replies

8. Shell Programming and Scripting

I want to print next 3 lines after pattern matching.

Dear Experts, I have file called file1 in which i am greping a pattern after that i want to next 3 lines when that pattern is matched. Ex:- file1 USA UK India Africa Hello Asia Europe Australia Hello Peter Robert Jo i want to next 3 lines after matching Hello... (12 Replies)
Discussion started by: naree
12 Replies

9. Shell Programming and Scripting

Perl script to match a pattern and print lines

Hi I have a file (say 'file1')and I want to search for a first occurence of pattern (say 'ERROR') and print ten lines in the file below pattern. I have to code it in PERL and I am using Solaris 5.9. I appreciate any help with code Thanks Ammu (6 Replies)
Discussion started by: ammu
6 Replies

10. Shell Programming and Scripting

Print block of lines matching a pattern

Hi :), I am using the script to search "MYPATTERN" in MYFILE and print that block of lines containing the pattern starting with HEADER upto FOOTER. But my problem is that at some occurrence my footer is different e.g. ";". How to modify the script so that MYPATTERN between HEADER and different... (1 Reply)
Discussion started by: vanand420
1 Replies
Login or Register to Ask a Question