A complex sed statement

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting A complex sed statement
# 1  
Old 03-17-2011
A complex sed statement

I have following requirement.
Say, my text file contains following patterns

}}@0|@315000|78500|335000|99000|114000|87000|17|And the Sort|Ab Initio Software|Built-in|1|10|0||6||32769|1|{1|0|}}}

Now, here I have to search for $AB_COMPONENTS, and pick the word which is after 2nd forward slash ("/") and before the period("."), i.e is SORT here.And store it in a file.
After this we have to take out words between 8th and 9th "|" in the immediate line. i.e. "And the Sort" here. And store it in a file.
Likewise we have to search the complete file.

Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs etc. to preserve formatting and enhance readability, thanks.

Last edited by zaxxon; 03-17-2011 at 06:18 AM.. Reason: code tags
# 2  
Old 03-17-2011
Are the above posted lines are in count 2 or in a single line..? Also pls post the desired output format.
# 3  
Old 03-17-2011
There are two lines...

The output shoould be

And the sort
# 4  
Old 03-17-2011
try this,
 awk -F"|" '
{if(first==1){print $9;first=0;next}for(i=1;i<=NF;i++){
if ($i~/\$AB_COMPONENTS/) {
split($i,a,"/");print substr(a[3],1,(index(a[3],"."))-1);first=1;
}}}' inputfile

This User Gave Thanks to pravin27 For This Post:
# 5  
Old 03-17-2011
Thanx a tonne Pravin27...really thanks...its working fine...but much complex to understand Smilie..thanks a lot..
# 6  
Old 03-17-2011
If the file contains blank lines between both lines:
awk -F"|" '/\$AB_COMPONENTS/{ print gensub(/.*\$AB_COMPONENTS\/.*\/(.*)\..*/,"\\1","");
getline; getline; print $9}' input
And the sort

If the file doesn't contain blank lines between lines:

awk -F"|" '/\$AB_COMPONENTS/{ print gensub(/.*\$AB_COMPONENTS\/.*\/(.*)\..*/,"\\1","");
getline; print $9}' input
And the sort

This User Gave Thanks to cgkmal For This Post:
# 7  
Old 03-17-2011
Through sed.. looks complex though
sed '/AB_COMPONENTS/s/.*\/\(.*\)\.mpc.*/\1/;n;s/^[^|]*|[^|]*|[^|]*|[^|]*|[^|]*|[^|]*|[^|]*[^|]*|[^|]*|\([^|]*\)|.*/\1/' inputfile >outfile

Last edited by michaelrozar17; 03-17-2011 at 07:01 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Complex Filter using grep, awk or sed

Hi, I'm not very familiar witrh sed or awk and hope the somebody can help me to solve my problem. I need to filter a text report using grep, sed or awk. I would like to cut out text lines with the pattern INFO and if exists the following lines of the pattern DETAILS. I need te keep the lines with... (4 Replies)
Discussion started by: Frankg
4 Replies

2. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

3. Shell Programming and Scripting

complex if statement syntax without using 'if ..' keyword in ksh.

It saves me lot of typing and space/lines when I do not use full 'if' keyword and construct, instead use .. && <statement> || <statement> that perfectly replaces.. if ; then <statement> else <statement> fi Can I use following syntax when I want to add multiple statements under 'if'... (4 Replies)
Discussion started by: kchinnam
4 Replies

4. UNIX for Dummies Questions & Answers

Complex If statement

can anyone please explain my below statement, i am confused. if || \ || \ || \ || then (1 Reply)
Discussion started by: kd09714
1 Replies

5. Shell Programming and Scripting

sed: How to modify files in a complex way

Hello, I am new to sed and hope that someone can help me with the following task. I need to modify a txt file which has format like this: xy=CreateDB|head.queue|head.source|head.definition|rtf.edit|rtf.task|rft.cut abc|source|divine|line4|5|true into something like: head.queue=abc... (19 Replies)
Discussion started by: pinkypunky
19 Replies

6. Shell Programming and Scripting

perl : semi complex if statement question

Hi there I am trying to write an if statement in perl that will return "SUCCESS" if either of these conditions are true a) if $changes is greater than 5 AND the $force flag is set to 1 OR b) if $changes is greater than 0 AND $changes is less than 6 #!/usr/bin/perl -w my $force =... (5 Replies)
Discussion started by: rethink
5 Replies

7. Shell Programming and Scripting

SED complex string replacement

sed -i 's:"ps -ef | grep $(cat $PID_FILE) | grep -v grep":"ps -C java -o pid,cmd | grep ${SERVER_NAME} | cut -d' ' -f1 | grep -v grep":g' scriptName That's what I'm attempting to do. I'm attempting to replace this: ps -ef | grep $(cat $PID_FILE) | grep -v grep with this: ps -C java -o... (5 Replies)
Discussion started by: cbo0485
5 Replies

8. Shell Programming and Scripting

Double Spacing complex sed pipeline

my script: FILE="$1" echo "You Entered $FILE" if ; then tmp=$(cat $FILE | sed '/./!d' | sed -n '/regex/,/regex/{/regex/d;p}'| sed -n '/---/,+2!p' | sed -n '/#/!p' | sed 's/^*//' | sed -e\ s/*:// | sed -n '/==> /!p' | sed -n '/--> /!p' | sed -n '/regex/,+1!p' | sed -n '/======/!p' | sed -n... (1 Reply)
Discussion started by: omgsomuchppl
1 Replies

9. Shell Programming and Scripting

Complex sed replacement

Hi, I have a file that I would like to translate using sed. I can do some basic sed commands, but Im afraid this level is beyond me. I have this file - ...alter... .. ...65536... ... ...65536... ... ...alter... ... ...65536... etc What I would like to do is replace the first... (11 Replies)
Discussion started by: one_ring99
11 Replies

10. Shell Programming and Scripting

Complex Sed/Awk Question?

Hello, So i have this file called /apps/turnout which looks like that of the contents of the /etc/shadow (but not exactly) the file has a long list in it. basically, the contents of this file looks something similar to the following: jajajajalala:D#$#AFVAdfda lalabavisof:#%R@fafla#$... (3 Replies)
Discussion started by: SkySmart
3 Replies
Login or Register to Ask a Question

Featured Tech Videos