Extract a string from a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract a string from a file
# 1  
Old 05-18-2008
Extract a string from a file

Input File:
=====================================
"Server1" srvgrp="group1" srvid=10
CLOPT="-A -r -e /path/logfile -o /path/stdout"
VAR1=0666 VAR2=N VAR3=0666 MIN=3 VAR4=4 VAR5=N
VAR6=FASTPATH
VAR7=5 VAR8=86400 VAR9=Y
VAR10=0 VAR11=1 VAR12=0
VAR13="0"
"Server1" srvgrp="group1" srvid=20
CLOPT="-A -r -e /path/logfile -o /path/stdout"
ENVVAR="/path/var.env"
VAR1=0666 VAR2=N VAR3=0666 MIN=3 VAR4=4 VAR5=N
VAR6=FASTPATH
VAR7=5 VAR8=86400 VAR9=Y
VAR10=0 VAR11=1 VAR12=0
VAR13="0"
"Server2" srvgrp="group2" srvid=20
CLOPT="-A -r -e /path/logfile -o /path/stdout"
VAR1=0666 VAR2=N VAR3=0666 MIN=2 VAR4=4 VAR5=N
VAR6=FASTPATH
VAR7=5 VAR8=86400 VAR9=Y
VAR10=0 VAR11=1 VAR12=0
=================================================

From above file I need to extract the value of MIN variable (in order to get the no. of occurences of that instance) & store it in a file along with the first string & second string

Desired output :
============
6 Server1 group1 ---> Since there are 2 instances each with MIN=3
2 Server2 group2

Last edited by kaustubh137; 05-18-2008 at 01:15 AM..
# 2  
Old 05-18-2008
One way of doing it with awk:
Code:
BEGIN { RS="\n^\""; FS="\n"; }

{
        # extract different values for server group and MIN
        match($1, /Server[0-9]+/, out); server = out[0]
        match($1, /group[0-9]+/, out); group = out[0]
        match($0, /MIN=([0-9]+)/, out); min = out[1]

        # add value of MIN to array result[Server_xx group_yy]
        result[server " " group] += min
}

# print array contents
END { for (i in result) printf "%d %s\n", result[i], i }


Last edited by ripat; 05-18-2008 at 06:45 AM..
# 3  
Old 05-18-2008
I am getting following error when tried to execute the statement:
=================================================
awk 'BEGIN { RS="\n^\""; FS="\n"; }
> {
> match($1, /Server[0-9]+/, out); server = out[0]
> match($1, /group[0-9]+/, out); group = out[0]
> match($0, /MIN=([0-9]+)/, out); min = out[1]
> result[server " " group] += min
> }
> END { for (i in result) printf "%d %s\n", result[i], i }' inputfile
syntax error The source line is 3.
The error context is
match($1, >>> /Server[0-9]+/, <<<
awk: The statement cannot be correctly parsed.
The source line is 3.

================================================
And when I execute it with " then I am getting following error :
awk "BEGIN { RS="\n^\""; FS="\n"; }
> {
> match($1, /Server[0-9]+/, out); server = out[0]
> match($1, /group[0-9]+/, out); group = out[0]
> match($0, /MIN=([0-9]+)/, out); min = out[1]
> result[server " " group] += min
> }
> END { for (i in result) printf "%d %s\n", result[i], i }" inputfile
ksh: 1: parameter not set

Pls suggest

Last edited by kaustubh137; 05-18-2008 at 11:27 PM..
# 4  
Old 05-19-2008
Code:
awk '
  /Server/ { split ($2, tmp, "="); ar = $1" " tmp[2]}
 /MIN/ { split ($4, count, "=")
        total[ar] = total[ar] + count[2]
       }
  END {
        for (a in total) {
         print a " " total[a]
        }
  }' <Filename>

# 5  
Old 05-19-2008
Thanks aju,

But I need the count to be displayed along with servername & group. I am not getting the correct count in this case. As I mentioned earlier, if MIN=2 for server1, group1 & MIN=3 again for server1, group1 then the count should be 5
# 6  
Old 05-19-2008
do u want output like

Code:
"Server1" "group1" 6
"Server2" "group2" 2

# 7  
Old 05-19-2008
yup...exactly
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract a string from a file

I have a file with below contents. INCLUDE INCLUDE SYSLIB(SANJ) INCLUDE SYSLIB(BIS) NAME BQTFL(R) dfdg fgbb NAME B i want to grep for "INCLUDE SYSLIB" in the file and do some operation so that my output will be in the bracketed value as below. SANJ BIS Pls let me know how can i... (7 Replies)
Discussion started by: millan
7 Replies

2. Shell Programming and Scripting

Need to extract a String from log file

Hi i am having a logfile which contain lot of entires, but i need extract a word after if i found a line that contains a particular string as "ENROLLMENT_EXCEPTION - Exception". please help me in getting a script to do this. Regards C. Suresh (5 Replies)
Discussion started by: sumeeva1907
5 Replies

3. Shell Programming and Scripting

Extract a specific string from a file

Hi, I have a file whose contents are as follows. 2013-03-08/15:09:20.134 INFO 00000000-00000000 0034 09700400 CON_IN SessionID:ED5E1400-4805-85E2-17B2-5BE45684886A Connection ID:ED5E1400-4805-68F1-BB1D-F06496BCF910 TO:<sip:51234999@10.239.94.146:5060 FROM:<sip:9302280716@97.208.31.7:51024... (2 Replies)
Discussion started by: SunilB2011
2 Replies

4. Shell Programming and Scripting

extract string from file name between two underscores

Hi, Here is my question, I need to extract string between two underscores from the filename for example, filename is atmos_8xdaily_instant_300x300_1_12.nc what I want to extract is 300x300. There are many such files in my directory, so I guess the code should be like: for file... (7 Replies)
Discussion started by: 1988PF
7 Replies

5. Shell Programming and Scripting

Extract a string between 2 ref string from a file

Hi, May i ask if someone share some command for extracting a string between 2 ref string in a txt file My objective: i had a file with multiple lines and wants only to extract the string "watch?v=IbkAXOmEHpY" or "watch?v=<11 random character>", when i used "grep 'watch?=*' i got a results per... (4 Replies)
Discussion started by: jao_madn
4 Replies

6. Shell Programming and Scripting

awk extract a string from a file

Hi, I have a file which has thousand of lines with lines starting with And I want to extract and show to user only the below string from all the lines Please note note that the above string is a time stamp and it would be different on all the lines. Please tell me how to extract... (8 Replies)
Discussion started by: jredx
8 Replies

7. Shell Programming and Scripting

Extract a string from file

Below are the content of my file and i need to extract the 6 digit numbers after the word barcode, how can i do this? for example i need to extract 004119,004275,004030 to a new file. Logically move media ID 004119 (barcode 004119) from standalone to slot 18. Logically move media ID 004275... (9 Replies)
Discussion started by: shehzad_m
9 Replies

8. Shell Programming and Scripting

Extract string from a file & write to a new file (Perl)

Hi, This is the first time playing around with perl and need some help. Assuming if i have a line of text that looks like this: Date/Time=Nov 18 17:12:11;Device Name=192.168.1.1;Device IP=192.168.1.1;Device Class=IDS;Source IP=155.212.212.111;Source Name=UNKNOWN;Source Port=1679... (3 Replies)
Discussion started by: LuckyGuy
3 Replies

9. Shell Programming and Scripting

Find a string and extract a value from a file

I have a file where a line has the following form: n0=7.00 !Central density and I want to extract the value 7.00. I used to do this with the order below, which finds the string "n0" and take the rest of the line parting from the separator "=", but the comment "Central density..."... (7 Replies)
Discussion started by: josegr
7 Replies

10. Shell Programming and Scripting

Search for string in a file and extract another string to a variable

Hi, guys. I have one question: I need to search for a string in a file, and then extract another string from the file and assign it to a variable. For example: the contents of the file (group) is below: ... ftp:x:23: mail:x:34 ... testing:x:2001 sales:x:2002 development:x:2003 ...... (6 Replies)
Discussion started by: daikeyang
6 Replies
Login or Register to Ask a Question