Visit Our UNIX and Linux User Community


extract text b/w two delimiters


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users extract text b/w two delimiters
# 1  
Old 01-18-2008
extract text b/w two delimiters

I have an input file which looks like

"
@$SCRIPT/atp_asrmt_adj.sql
$SCRIPT/dba2000.scr -s / @$SCRIPT/cim1005w.pls
$SCRIPT/dba2000.scr -s / @$SCRIPT/cim1006w.pls
start $SCRIPT/cim1020d.sql;^M
spool $DATA/cim1021m.sql
@$DATA/cim1021m.sql
! rm $DATA/cim1021m.sql
spool $DATA/cim1021m.sql
@$DATA/cim1021m.sql
! rm $DATA/cim1021m.sql
start $SCRIPT/art_matrix_audit_purge.pls
start $SCRIPT/event_sku_price_log_purge.pls
start $SCRIPT/event_sku_price_audit_purge.pls
start $SCRIPT/event_sku_rscn_audit_purge.pls
@$SCRIPT/in_process_audit_purge.sql
$SCRIPT/dba2000.scr /NOLOG @$SCRIPT/mphdsum.pls
ERROR_SCRIPT "Error with deduct.pls"
$SCRIPT/dba2000.scr /NOLOG @$SCRIPT/pastdue.pls
ERROR_SCRIPT "Error with pastdue.pls"
$SCRIPT/dba2000.scr /NOLOG @$SCRIPT/ordpos1.pls
ERROR_SCRIPT "Error with ordpos1.pls"
$SCRIPT/dba2000.scr /NOLOG @$SCRIPT/ordpos2.pls
ERROR_SCRIPT "Error with ordpos2.pls"
ERROR_SCRIPT "Error Code:'$RCSUM!' in sum1so.sql"
ERROR_SCRIPT "Error Code:'$RCSUM2' in sum2so.sql"
ERROR_SCRIPT "Error Code:'$RCSUM3' in sum3so.sql"
"

My requirement is to extract all the text b/w :
1). "/" and ".sql"
2)."/" and ".pls"
3)." " and ".sql"
4)." " and ".pls"

It is really urgent, any suggestion would be highly appreciated.
Thanks
NB: there might be a number of "/" in a line
# 2  
Old 01-18-2008
You will need to do something more than just copy/paste as I am not going to write everything by you (you should learn it and code it), but here it goes:
1. You will fall into deep s**t whenever a filename contain special characters/new line.

2. Code:
while read -p line; do
[[ -z "${line}" ]] && continue
line="${line##/|\ }"
line="${line%.pls}"
[[ -n "${line}" ]] && print -- "${line}"
done

EDIT: This is a korn shell's code to be clear.
I believe that you could do it with one command using sed

Last edited by adderek; 01-18-2008 at 07:25 AM.. Reason: Clarification
# 3  
Old 01-18-2008
If you provide an example of the output you expect, somebody may be able to help you.
# 4  
Old 01-18-2008
It is really tough to understand. Could you please explain me How didi you do that. I was applying a logic :
1). cut the line with the delimiter ".sql" and take the first field.(e.g spool $DATA/cim1021m)
2). convert all "/" to spaces and then (spool $DATA cim1021m)
3).delete everything till the last space(cim1021m)
# 5  
Old 01-18-2008
If the input file is
"
@$SCRIPT/atp_asrmt_adj.sql
$SCRIPT/dba2000.scr -s / @$SCRIPT/cim1005w.pls
$SCRIPT/dba2000.scr -s / @$SCRIPT/cim1006w.pls
start $SCRIPT/cim1020d.sql;^M
spool $DATA/cim1021m.sql
@$DATA/cim1021m.sql
! rm $DATA/cim1021m.sql
spool $DATA/cim1021m.sql
@$DATA/cim1021m.sql
! rm $DATA/cim1021m.sql
"
Then the output file must be

"
atp_asrmt_adj
cim1005w
cim1006w
cim1020d
cim1021m
cim1021m
cim1021m
cim1021m
cim1021m
cim1021m

"
# 6  
Old 01-18-2008
Code:
awk 'BEGIN{ FS="[/ ]"}{print $NF} ' file

# 7  
Old 01-18-2008
You can do it using sed, awk and other.
The idea is to parse this line by line and to remove prefix and postfix.
In ksh following syntax:
line="${line#xxx}"
is "remove trailing string "xxx" from the variable line. if not possible to remove then return me the string unmodified. then assign result to line".
# : remove trailing part
## : remove trailing part (as much as possible)
% : similar but for ending part
%% : similar

Example:
x='aaabbb'
"${x#a}" is 'aabbb'
"${x##a}" is 'bbb'

sed should handle this best (however I had some bad experience with lines longer than 255 chars in sed). Just tell him to remove replace {prefix_pattern}{?}{postfix_pattern} and replace it with {?}.
Sory, but I don't remember exactly what was the syntax in sed.

In example given by me you can see:

line="${line##/|\ }"
This is "remove prefix". And prefix is a pattern: '/' or ' '

line="${line%.pls}"
This is "remove postfix". And postfix is '.pls'. Just replace this with a pattern and you have it.
To pass the data for 'read -p' you could use
cat file |&

Previous Thread | Next Thread
Test Your Knowledge in Computers #763
Difficulty: Medium
L4 caches are currently very common in computer systems.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Skip the delimiter with in double quotes and count the number of delimiters during data extract

Hi All, I'm stuck-up in finding a way to skip the delimiter which come within double quotes using awk or any other better option. can someone please help me out. Below are the details: Delimited: | Sample data: 742433154|"SYN|THESIS MED CHEM PTY.... (2 Replies)
Discussion started by: BrahmaNaiduA
2 Replies

2. Shell Programming and Scripting

Extract value between the delimiters and replace it with another value

Hi All, i have file name like below ABC_065224_123456_123456_your_130413_163005.txt ABC_065224_123456_MAIN_20130413_163005.txt ABC_065224_123456_123456_MAIN_130413_163005.txt ABC_065224_123456_123456_434567_MAIN_130413_163005.txt i need to find out the number of characters in the filed... (6 Replies)
Discussion started by: dssyadav
6 Replies

3. Shell Programming and Scripting

Extract strings within XML file between different delimiters

Good afternoon! I have an XML file from which I want to extract only certain elements contained within each line. The problem is that the format of each line is not exactly the same (though similiar). For example, oa_var will be in each line, however, there may be no value or other... (3 Replies)
Discussion started by: bab@faa
3 Replies

4. Shell Programming and Scripting

Print text between delimiters IF it contains a certain term...

So I'm racking my brain on appropriate ways to solve a problem that once fixed, will solve every problem in my life. Its very easy (for you guys and gals) I'm sure, but I can't seem to wrap my mind around the right approach. I really want to use bash to do this, but I can't grasp how I'm going to... (14 Replies)
Discussion started by: eh3civic
14 Replies

5. Shell Programming and Scripting

Order text by delimiters

I try order the content from file by delimiters. This is the text: interface Loopback0 description !!!RID RR_SLT ip address 172.31.128.19 255.255.255.255 interface GigabitEthernet0 description !!!P_SLT GI0/0/9 ip address 172.31.130.246 255.255.255.252 and the result that I need... (11 Replies)
Discussion started by: bobbasystem
11 Replies

6. AIX

Print text between two delimiters

Hi, Can somebody help me with the below situation, Input File, ======== 2007_08_07_IA-0100-014_(MONTHLY).PDF 2007_08_07_IA-0100-031_(QUARTERLY)(RERUN).PDF 2008-02-28_KR-1022-003_(MONTH)(RERUN)(REC1).CSV Required output, ============ MONTHLY QUARTERLY MONTH ... (15 Replies)
Discussion started by: sravicha
15 Replies

7. Shell Programming and Scripting

sub-string extract between variable delimiters

I need to extract certain pieces from a string, wher delimiters may vary. For example A0 B0 C0 12345677 X0 Y0 Z0 A1-B1 C1 12345678 X1 Y0 Z0 A1/B2 C77 12345679 X2 Y0 Z0 I need to get C0 12345677 X0 C1 12345678 X1 C77 12345679 X2 I tried sed, see example below: echo 'A0 B0... (2 Replies)
Discussion started by: migurus
2 Replies

8. Programming

c program to extract text between two delimiters from some text file

needa c program to extract text between two delimiters from some text file. and then storing them in to diffrent variables ? text file like 0: abc.txt ========= aaaaaa|11111111|sssssssssss|333333|ddddddddd|34343454564|asass aaaaaa|11111111|sssssssssss|333333|ddddddddd|34343454564|asass... (7 Replies)
Discussion started by: kukretiabhi13
7 Replies

9. Shell Programming and Scripting

how to extract values b/w two delimiters

Hi, Please help me to extrat values b/w two delimiters. $ echo $abc i want to extract the value 12345 b/w %. (5 Replies)
Discussion started by: tsaravanan
5 Replies

10. Solaris

To extract everything between two delimiters

My input file looks like " @$SCRIPT/atp_asrmt_adj.sql $SCRIPT/dba2000.scr -s / @$SCRIPT/cim1005w.pls $SCRIPT/dba2000.scr -s / @$SCRIPT/cim1006w.pls start $SCRIPT/cim1020d.sql;^M spool $DATA/cim1021m.sql @$DATA/cim1021m.sql ! rm $DATA/cim1021m.sql spool $DATA/cim1021m.sql... (1 Reply)
Discussion started by: dowsed4u8
1 Replies

Featured Tech Videos