Monday, August 25, 2008

UNIX - Extracting text between any Two Lines

I created a script that modifies an sql script in certain logical way. It extracts texts between certain logical lines and sends the output to a new file. You can download the shell script from here and try executing it with the attached test.sql as input. I created this script to alter PeopleSoft Generated AlterByRename sqls into simple CREATE statements.

Extract_Text.sh
usage: ./Extract_text.sh
NOTE: After downloading this file, please REPLACE
&lt ; with <
&gt ; with >
There is no space between &lt and ; or &gt and ;
(I've mentained the space because of issue with blogspot)

test.sql

2 comments:

Laurent Schneider said...

I would do in one line ... much faster than your while read loop!

awk '/^CREATE UNIQUE INDEX/{print "-- Create unique index #"++x}/^CREATE TABLE/{print "-- Create table #"++y}/^CREATE (UNIQUE INDEX|TABLE)/,/;/{print}' test.sql

Rakesh Parwal said...

Laurent, that's wonderful... I've heard of awk being very powerful command. Thank you very much for sharing this bit of information.

OCI - Attach Block Volume to Windows VM

Tip: Although creating and attaching Block Storage to a Windows VM is pretty straightforward (OCI documentation is pretty good for that), th...