Script for extraction of pattern


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Script for extraction of pattern
# 1  
Old 02-19-2017
Script for extraction of pattern

Anyone can help here, with a script to extract the highlighted details from this two blocks?Actually there are milions of block, this is a sample?

Code:
dn: EpsStaInfId=EpsStaInf,serv=EPS,mscId=aaaaaa001aaaaaaaa629100100138702,ou=multiSCs,dc=mtncg
structuralObjectClass: EpsStaticInf
objectClass: EpsStaticInf
entryDS: 1
nodeId: 1
createTimestamp: 20170119123400Z
modifyTimestamp: 20170119123400Z
EpsStaInfId: EpsStaInf
EpsProfileId: 29
EpsOdb: 0
EpsRoamAllow: TRUE
CDC: 1
EpsIndSubChargChars: 123

dn: EpsStaInfId=EpsStaInf,serv=EPS,mscId=aaaaaa001aaaaaaaa629100100165619,ou=multiSCs,dc=mtncg
structuralObjectClass: EpsStaticInf
objectClass: EpsStaticInf
entryDS: 1
nodeId: 1
createTimestamp: 20170211115449Z
modifyTimestamp: 20170211115449Z
EpsStaInfId: EpsStaInf
EpsProfileId: 29
EpsOdb: 0
EpsRoamAllow: TRUE
CDC: 1
EpsIndSubChargChars: 123

# 2  
Old 02-19-2017
Hi,

Sure, no problem. Here's one way to do it:

Code:
$ grep ^dn sample | awk -F, '{print $3}'
mscId=aaaaaa001aaaaaaaa629100100138702
mscId=aaaaaa001aaaaaaaa629100100165619
$

So the idea is we're using 'grep' to look for lines that start with 'dn' (that's the meaning of the carat symbol in this context), and then using 'awk' to print the third field, with the field separator being specified as a comma via the -F flag.

Hope this helps.
# 3  
Old 02-19-2017
@Thank you very much, but i need the output in a file and i also need the line EpsProfileId:29
so bellow is what i want in a file:

mscId=aaaaaa001aaaaaaaa629100100138702, EpsProfileId: 29
mscId=aaaaaa001aaaaaaaa629100100165619, EpsProfileId: 29

Cause if i have 2 or 3 milions blocks, they should all be in the same a file. Thanks
# 4  
Old 02-19-2017
Hi,

(Have just edited the lines that print the output so you get everything in the format you want)

Sorry, my solution won't quite do - just noticed you need two lines from the blocks, not just the first one (my apologies).

Something like this should do the trick:

Code:
$ cat script.sh
#!/bin/bash
cat sample.txt | while read -r line
do
        if echo $line | grep ^dn >/dev/null 2>/dev/null
        then
                echo $line | grep ^dn  | awk -F, '{printf $3","}'
        fi

        if echo $line | grep ^EpsProfileId: >/dev/null 2>/dev/null
        then
                echo $line
        fi
done
$ ./script.sh
mscId=aaaaaa001aaaaaaaa629100100138702,EpsProfileId: 29
mscId=aaaaaa001aaaaaaaa629100100165619,EpsProfileId: 29
$

This User Gave Thanks to drysdalk For This Post:
# 5  
Old 02-19-2017
But i tried i don't have the output in a file?can we find a way to put the output in a file?please
# 6  
Old 02-19-2017
Imagine creating 52 million (2 mio blocks * 13 lines * 2 tests) processes to run a grep in each - might take some time. Try

Code:
awk 'match ($0, /mscId=[^,]*/) {printf "%s, ", substr ($0, RSTART, RLENGTH)}; /EpsProfileId/' file
mscId=aaaaaa001aaaaaaaa629100100138702, EpsProfileId: 29
mscId=aaaaaa001aaaaaaaa629100100165619, EpsProfileId: 29

And, although having been raised in your other thread, the question for your own attempts still is valid. PLEASE answer it in your future requests!



Quote:
Originally Posted by gillesi
But i tried i don't have the output in a file?can we find a way to put the output in a file?please
I'd propose that you READ, UNDERSTAND, and HEED peoples' answers ...

Last edited by RudiC; 02-19-2017 at 09:59 AM..
This User Gave Thanks to RudiC For This Post:
# 7  
Old 02-19-2017
Hi,

Putting the output in a file is fairly straightforward - in general, the standard output of any command can be re-directed to a file by means of the > re-director.

So for example:

Code:
$ ./script.sh
mscId=aaaaaa001aaaaaaaa629100100138702,EpsProfileId: 29
mscId=aaaaaa001aaaaaaaa629100100165619,EpsProfileId: 29
$ ./script.sh > output.txt
$ cat output.txt
mscId=aaaaaa001aaaaaaaa629100100138702,EpsProfileId: 29
mscId=aaaaaa001aaaaaaaa629100100165619,EpsProfileId: 29
$

As you can see, we got no output on the terminal from 'script.sh' when we ran it with output re-direction the second time. Instead, the output was re-directed to the file 'output.txt' instead. So doing something like this should be sufficient, and will work in general for most things that write to standard output on a UNIX-style system.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Extraction of data between parenthesis using multiple pattern

i want to extract all data with in parenthesis from a file by passing a pattern from another file.i have some sql statements in my file and i want to extract those ddl by refering to a pattern which is in another file and before writting into file i need some transformation to do.Basically i want... (1 Reply)
Discussion started by: raj121
1 Replies

2. Shell Programming and Scripting

Pattern Search and Extraction Problem

I have something like this: bash-3.2$ svn info Path: . URL: svn+ssh://nlaedev01@10.209.194.15/files0/nlae_dev_svn/repos/newlook-endeca/trunk Repository Root: svn+ssh://nlaedev01@10.209.194.15/files0/nlae_dev_svn/repos/newlook-endeca Repository UUID: 4e8fbe85-c2e2-42fe-a5fa-f9f9100d2393... (3 Replies)
Discussion started by: ankur328
3 Replies

3. Shell Programming and Scripting

Script to compare pattern and print a different pattern in each line

Hi, I am writing a shell script to parse some files, and gather data. The data in the files is displayed as below. .......xyz: abz: ......qrt: .... .......xyz: abz: ......qrt: ... I have tried using awk and cut, but the position of these values keep changing, so I wasn't able to get... (2 Replies)
Discussion started by: Serena
2 Replies

4. Shell Programming and Scripting

Pattern extraction and usage by shell script

Suppose im in a directory A. which has sub-directories x/y/z m/n/p etc. Iam only considered with those which have a file netl.oa at the lowermost level. So i used the find command which gives me a list in the form ./abc/def/ghi/jkl/netl.oa and so on Now i want the names abc def jkl and ghi. My... (3 Replies)
Discussion started by: sid.verycool
3 Replies

5. UNIX for Dummies Questions & Answers

Extraction of strings from a file, after pattern matching

I need to extract strings from a file. The file contains data like: Plan ABCD IN-+-172BB---118C2C---GGN_342-+-MM77_23--+-LAS24_3|GGK_774 | | \-LAS24_2|GGN_774 | +-AA_800_1-+-BAS_000|GGK_362 | | \-BAS_001|GGK_360 | \-DD_000T1---DAM_001|STEEL_0 Plan SHELL_1... (3 Replies)
Discussion started by: abkush
3 Replies

6. Shell Programming and Scripting

Date and time range extraction via Awk or analysis script?

Hello does anyone know of an awk that will extract log file entries between a specific date and time range, eg: awk '/15\/Dec\/2010:16:10:00/, /15\/Dec\/2010:16:15:00/' access_log but one that works? Or a free command line log file analysis tool/script? I'd like to be able to view... (2 Replies)
Discussion started by: competitions
2 Replies

7. Infrastructure Monitoring

Shell Script Extraction

Hello Users, I am new to unix. I have a requirement to extract the string in the folder with files names XXXX.sev.xxxxx.lookup (There are some more files which I am not interested in like xxxxx.include.xxx.lookup). 1) I am looking for the file with the name "sev" ending with "lookup" ... (11 Replies)
Discussion started by: reachravi70
11 Replies

8. UNIX for Advanced & Expert Users

extraction of data from a text file which follows certain pattern

hi everybody, i have a file, in it I need to extract some data that follows a particular pattern.. For example: my file contains like now running Speak225 sep 22 mon 16:34:05 2008 -------------------------------- ... (4 Replies)
Discussion started by: mohkris
4 Replies

9. Shell Programming and Scripting

Shell script for text extraction from a file

Hi All, I am new to Shell Scripting. I have a file consisting of XML messages.Each message is associated with a timestamp value(it is not a xml field).I need to extract\copy all messages in a particular time interval and put in another new file using Shell Scripting. My XML looks like... (3 Replies)
Discussion started by: vignesh53
3 Replies

10. Shell Programming and Scripting

help with data extraction script

Hello all, Iam newbie here and to unix programming. I have the following text file. A:Woshington,B:London,C:Paris,D:Manchester,C:Lisbon,E:Cape town. Now I would like extract this and store in database. here is the script I have tried but it did work. CITY1:`echo "$text" | grep "A:"... (11 Replies)
Discussion started by: mam
11 Replies
Login or Register to Ask a Question