Grep between 2 patterns in a line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep between 2 patterns in a line
# 15  
Old 05-27-2010
Try this Perl one-liner for your input file "f".

Code:
perl -lne '/^\s*\d+ ("*(ABC|DEF).*) "*(ABC|DEF).*$/ and print $1' f

This one-liner, when tested in my system for your file "f", shows this -

Code:
$
$
$ cat f
     18277 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_4_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_LKH_real_4_ M THTDTNH0weght +
     18278 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_5_ ABC.hyuns.heksd.ut.mestyue_i.n_2837 M THTDTNH0weght +
     18279 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_6_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_LKH_real_6_ M THTDTNH0weght +
     18280 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_7_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_LKH_real_7_ M THTDTNH0weght +
     18281 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_etl1_mijyt_m_ps_2_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_LKH_real_2_ M THTDTNH0weght +
     18282 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_etl1_mijyt_m_ps_0_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_LKH_real_0_ M THTDTNH0weght +
     18283 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_etl1_mijyt_m_ps_1_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_LKH_real_1_ M THTDTNH0weght +
     18284 ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__OpCodeRWVec2__31_0_etl1_mijyt_m_ps_29_ ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__OpCodeRWVec2__31_0_LKH_real_29_ M THTDTNH0weght +
     18285 ABC.UCTSC.aghsty_4__teluths_0_ ABC.n_1452 M hGfD1TBCLVT +
     18288 "ABC.ABC__889.hukas_0.M675.Xcrtz_0.\JuRl1rtz__ABC_TagOp_TA0_rtz[0] .M895" "ABC.ABC__889.hukas_0.M675.Xcrtz_0.\JuRl1rtz__ABC_TagOp_TA0_rtz[0] .hu23019" LKHX JUHFD4TBC -
$
$ perl -lne '/^\s*\d+ ("*(ABC|DEF).*) "*(ABC|DEF).*$/ and print $1' f
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_4_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_5_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_6_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__GHytnem__7_0_etl1_mijyt_m_ps_7_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_etl1_mijyt_m_ps_2_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_etl1_mijyt_m_ps_0_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__PHTem__2_0_etl1_mijyt_m_ps_1_
ABC.hyuns.heksd.ut.mestyue_i.mestnem_i.etl1soo__OpCodeRWVec2__31_0_etl1_mijyt_m_ps_29_
ABC.UCTSC.aghsty_4__teluths_0_
"ABC.ABC__889.hukas_0.M675.Xcrtz_0.\JuRl1rtz__ABC_TagOp_TA0_rtz[0] .M895"
$
$
$

The text in red is the difference between this and the earlier script.

tyler_durden
# 16  
Old 05-27-2010
Code:
awk '{
   if ($0~"^\"") {
      FS="\""
      printf("%s%s%s%s\n", FS,$1,$2,FS)
   } else {
      FS=" "
      printf("%s %s\n",$1,$2)
   }
}' file

# 17  
Old 05-27-2010
Thanks everyone !!! It is finally working.. !
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep multiple patterns(file) and replace whole line

I am able to grep multiple patterns which stored in a files. However, how could we replace the whole line with either the pattern or new string? For example: pattern_file: *Info in the () is not part of the pattern file. They are the intended name to replace the whole line after the pattern... (5 Replies)
Discussion started by: wxboo
5 Replies

2. Shell Programming and Scripting

Find matched patterns and print them with other patterns not the whole line

Hi, I am trying to extract some patterns from a line. The input file is space delimited and i could not use column to get value after "IN" or "OUT" patterns as there could be multiple white spaces before the next digits that i need to print in the output file . I need to print 3 patterns in a... (3 Replies)
Discussion started by: redse171
3 Replies

3. Shell Programming and Scripting

Grep patterns

Hi Experts, I have a log file like this.I need to filter the Index name and elapsed time(only created ). 06:36:39 SQL> create index XYZ_F75 on XYZ 06:36:39 2 ("GRP_ID", "_ID") parallel 64 nologging 06:36:39 3 tablespace XARGS_IDX 06:36:39 4 ; Index created. Elapsed:... (2 Replies)
Discussion started by: navsan420
2 Replies

4. Shell Programming and Scripting

comment a line of the patterns is a the beginning of the line

I need to comment the lines starting with pattern "exclude" or "exclude=". If the work exclude comes at any other part, ignore it. Also, ignore, excludes, excluded etc. Ie only comment the line starting with exclude. File contents. exclude exclude= hi I am excluded excludes excludes= ... (9 Replies)
Discussion started by: anil510
9 Replies

5. UNIX for Dummies Questions & Answers

Grep - various patterns

I have a file with the following text: grep \$ grep \\$ grep \\\$ grep '\$' grep '\'$' grep \\ grep \\\\ grep "\$" grep '"$' grep "$" When I perform these same commands on this file, the result are never what I would expect them to be. Could someone please comment on the results and... (3 Replies)
Discussion started by: uran101
3 Replies

6. Shell Programming and Scripting

grep value between two patterns

Hi All, I've been trying solve this with a simple command but not having much luck. I have a file like this: Line 1: random_description 123/alert/high random_description2 356/alert/slow Line 2: random_description3 654/alert/medium Line 3: random_description4 234/alert/critical I'm... (7 Replies)
Discussion started by: joe19
7 Replies

7. Shell Programming and Scripting

grep for multiple patterns

I have a file with many rows. I want to grep for multiple patterns from the file. For eg: XX=123|YY=222|ZZ=566 AA=123|EE=222|GG=566 FF=123|RR=222|GG=566 DD=123|RR=222|GG=566 I want the lines which has both XX and ZZ. I know I can get it like this. grep XX file | grep YY But... (10 Replies)
Discussion started by: tene
10 Replies

8. Shell Programming and Scripting

Grep All lines between 2 different patterns

I need a simple script to get all lines between 2 Patterns, e.g. ............. ............. 114456723: testing Script Alpha Beta 114459234: testing Done ............. ............. It should give all the lines in between 114456723 and 114459234, including these as well. Any... (2 Replies)
Discussion started by: gurpreet470
2 Replies

9. Shell Programming and Scripting

grep patterns - File

Hi I have 3 patterns for example to be searched. These three patterns are available in file1. The patterns to be searched are in file2. I want to search the pattern of file1 to file2. Can any one help with example? Regards Dhana (1 Reply)
Discussion started by: dhanamurthy
1 Replies

10. Shell Programming and Scripting

Grep multiple patterns

Hi, Can we grep multiple patterns in UNIX. for example: cat /x/y/oratab | grep -i "pattern1|pattern2" .... etc I require the syntax for multiple patterns. | is not working as I explained in example. Malay (4 Replies)
Discussion started by: malaymaru
4 Replies
Login or Register to Ask a Question