Sponsored Content
Top Forums Shell Programming and Scripting awk extract strings matching multiple patterns Post 302863251 by MadeInGermany on Sunday 13th of October 2013 12:12:37 PM
Old 10-13-2013
As RudiC pointed out, the following only works on Solaris:
Code:
/usr/xpg4/bin/awk '{
started=$0; if (!sub(".*Started on <([^>]*).*","\1",started)) started="-"
memlimit=$0; if (!sub(".*MEMLIMIT ([^ ]* [^ ;]*).*","\1",memlimit)) memlimit="-"
mem=$0; if (!sub(".*MEM: ([^ ]* [^ ;]*).*","\1",mem)) mem="-"
printf "Started on: %-8s MEMLIMIT: %-8s MEM: %-8s\n",started,memlimit,mem
}' file
Started on: cn035    MEMLIMIT: 10 G     MEM: 1 Gbytes
Started on: cn069    MEMLIMIT: 10 G     MEM: 1 Gbytes
Started on: cn049    MEMLIMIT: 10 G     MEM: 2 Gbytes
Started on: -        MEMLIMIT: -        MEM: 3 Gbytes
Started on: -        MEMLIMIT: -        MEM: 1014 Mbytes
Started on: cn014    MEMLIMIT: 10 G     MEM: 391 Mbytes
Started on: cn026    MEMLIMIT: -        MEM: 13 Mbytes
Started on: cn064    MEMLIMIT: 22 G     MEM: 12 Gbytes


Last edited by MadeInGermany; 10-13-2013 at 01:47 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

AWK: matching patterns in 2 different files

In a directory, there are two different file extensions (*.txt and *.xyz) having similar names of numerical strings (*). The (*.txt) contains 5000 multiple files and the (*.xyz) also contains 5000 multiple files. Each of the files has around 4000 rows and 8 columns, with several unique string... (5 Replies)
Discussion started by: asanjuan
5 Replies

2. Shell Programming and Scripting

matching patterns inside a condition in awk

I have the following in an awk script. I want to do them on condition that: fext == "xt" FNR == NR { />/ && idx = ++i $2 || val = $1 next } FNR in idx { v = val] } { !/>/ && srdist = abs($1 - v) } />/ || NF == 2 && srdist < dsrmx {... (1 Reply)
Discussion started by: kristinu
1 Replies

3. UNIX for Dummies Questions & Answers

Search and extract matching patterns

%%%%% (9 Replies)
Discussion started by: lucasvs
9 Replies

4. Shell Programming and Scripting

awk? extract quoted "" strings from multiple lines.

I am trying to extract multiple strings from snmp-mib files like below. ----- $ cat IF-MIB.mib <snip> linkDown NOTIFICATION-TYPE OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } STATUS current DESCRIPTION "A linkDown trap signifies that the SNMP entity, acting in... (5 Replies)
Discussion started by: genzo
5 Replies

5. UNIX for Dummies Questions & Answers

[SOLVED] awk: matching degenerate patterns

Hi Folks, I have two arrays a: aaa bbb ccc ddd ddd aaa bbb ccc ddd ccc aaa bbb b: aaa bbb ccc aaa ccc bbb bbb aaa ccc ccc bbb aaa I want to compare row by row a(c1:c4) to b(c1:c3). If elements of 'b' match... (5 Replies)
Discussion started by: heecha
5 Replies

6. Shell Programming and Scripting

Extract multiple occurance of strings between 2 patterns

I need to extract multiple occurance strings between 2 different patterns in given line. For e.g. in below as input ------------------------------------------------------------------------------------- mike(hussey) AND mike(donald) AND mike(ryan) AND mike(johnson)... (8 Replies)
Discussion started by: sameermohite
8 Replies

7. Shell Programming and Scripting

Extract multiple strings from line

Hello I have an output that has a string between quotes and another between square brackets on the same line. I need to extract these 2 strings Example line Device "nrst3a" attributes=(0x4) RAW SERIAL_NUMBER=SNL2 Output should look like nrst3a VD073AV1443BVW00083 I was trying with sed... (3 Replies)
Discussion started by: bombcan
3 Replies

8. Shell Programming and Scripting

Find files not matching multiple patterns and then delete anything older than 10 days

Hi, I have multiple files in my log folder. e.g: a_m1.log b_1.log c_1.log d_1.log b_2.log c_2.log d_2.log e_m1.log a_m2.log e_m2.log I need to keep latest 10 instances of each file. I can write multiple find commands but looking if it is possible in one line. m file are monthly... (4 Replies)
Discussion started by: wahi80
4 Replies

9. UNIX for Beginners Questions & Answers

How to extract the partial matching strings among two files?

I have a two file as shown below, file:1 >Contig_152_415 (REVERSE SENSE) >Contig_152_420 (REVERSE SENSE) >Contig_152_472 (REVERSE SENSE) >Contig_152_484 (REVERSE SENSE) File:2 >Contig_152:49081-49929 ATCGAGCAGCGCCGCGTGCGGTGCACCCTTGTGCAGATCGGGAGTAACCACGCGCACGGC... (2 Replies)
Discussion started by: dineshkumarsrk
2 Replies

10. UNIX for Beginners Questions & Answers

Match patterns between two files and extract certain range of strings

Hi, I need help to match patterns from between two different files and extract region of strings. inputfile1.fa >l-WR24-1:1 GCCGGCGTCGCGGTTGCTCGCGCTCTGGGCGCTGGCGGCTGTGGCTCTACCCGGCTCCGG GGCGGAGGGCGACGGCGGGTGGTGAGCGGCCCGGGAGGGGCCGGGCGGTGGGGTCACGTG... (4 Replies)
Discussion started by: bunny_merah19
4 Replies
extract(1)						      General Commands Manual							extract(1)

NAME
extract - interactive string extract and replace SYNOPSIS
extract [-i ignorefile] [-m prefix] [-n] [-p patternfile] [-s string] [-u] source-program... OPTIONS
Ignore text strings specified in ignorefile. By default, the extract command searches for ignorefile in the current working directory, your home directory, and /usr/lib/nls. If you omit the -i option, extract recognizes all strings specified in the patterns file. Add prefix to message numbers in the out- put source program and source message catalog. You can use this prefix as a mnemonic. You must process source message catalogs that contain message number prefixes using the mkcatdefs command. Create a new source message catalog for each input source pro- gram. By default, if you specify more than one input source program on the extract command line, the command creates one source message catalog for all the input source programs. Use patternfile to match strings in the input source program. By default, the command searches for the pattern file in the current directory, your home directory, and /usr/lib/nls. If you omit the -p option, the extract command uses a default patterns file that is stored in /usr/lib/nls/patterns. Write string at the top of the source message catalog. If you omit the -s option, extract uses the string specified in the $CATHEAD section of the patterns file. Use a message file produced by a previous run of strextract. This file contains details of all the strings which matched the pattern file along with file offsets and line numbers. By default strextract is run and its output is used to drive extract. DESCRIPTION
The extract command interactively extracts text strings from source programs. The extract command replaces the strings it extracts with calls to the catgets function. The command also writes the string it extracts to a source message catalog. You use this command to replace hard-coded messages in your program source file with calls to the catgets command and create a source message catalog. At run time, the program reads the message text from the message catalog. By storing messages in a message catalog, instead of in your program, you allow the text of messages to be translated to a new language or modified without the source program being changed. In the source-program argument, you name one or more source programs from which you want messages extracted. The extract command does not extract messages from source programs included using the #include directive. Therefore, you might want to name a source program and all the source programs it includes on a single extract command line. You can create a patterns file (as specified by patternfile) to control how the extract command extracts and replaces text. The patterns file is divided into several sections, each of which is identified by a keyword. The keyword must start at the beginning of a new line, and its first character must be a dollar sign ($). Following the identifier, you specify a number of patterns. Each pattern begins on a new line and follows the regular expression syntax you use in the regexp routine. For more information on the patterns file, see pat- terns(4)and for more information on the regexp routine, see regexp(3). In addition to the patterns file, you can create a file that indicates strings that extract ignores. Each line in this ignore file con- tains a single string to be ignored that follows the syntax of the regexp routine. When you invoke the extract command, it reads the patterns file and the file that contains strings it ignores. You can specify a patterns file and an ignore file on the extract command line. Otherwise, the extract command matches all strings and uses a default patterns file. When you run extract, it displays three windows on your terminal. The first window contains the program source code. The string that matches a string in the patterns file is displayed in reverse video. The second window displays the contents of the source message catalog that the extract command is creating. The third window contains a list of the commands that are available. The extract command displays the current command in reverse video. You can execute the current command by pressing the RETURN key. Select another command by typing the first letter in the command name and pressing the RETURN key. The extract command is not sensitive to the case of letters, so you can use uppercase or lowercase letters to issue commands. You can use the following commands to control how extract treats the string displayed in the first window: Extract the string into the cat- alog file and rewrite the source using the rewrite string in the patterns file. If the string has been encountered previously, rewrite the source program using the same message number as before. The extract command need not add the message to the source message catalog again, so this command saves space in catalogs. Ignore this and all subsequent occurrences of this string during this interactive session. This command does not add the string to the ignore file. Pass by (ignore) this occurrence of this particular string. Ignore this and all sub- sequent occurrences of this string during this interactive session. Add the string to the ignore file. Add the comment you enter to the source message catalog. The extract command prompts you to be sure the comment you entered is correct. You answer the prompt by typing "y," "n," or "q," without pressing the RETURN key. Quit from the interactive session. The extract command prompts you to be sure you want to quit. Answer "y" or "n" to the prompt, without pressing the return key. The output files that extract creates up to this point are not removed by this command. However, the files contain only the result of the string extractions that occurred before you issued the QUIT command. Display a description of all the extract commands. The extract command creates two files in your current working directory. The command creates a new version of the source program that con- tains calls to the catgets function, instead of hard-coded messages. The new version of the source program has the same name as the input source program, with the prefix nl_. For example, if the input source program is named update.c, the output source program is named nl_update.c. In addition to a new source program, the extract command creates a source message catalog. The source message catalog contains the text for each message extracted from your input source program. The extract command names the file by appending to the name of the input source program. For example, the source message catalog for the update.c source program is named update.msg. You can use the source message cat- alog as input to the gencat command. RESTRICTIONS
Given the current syntax of the patterns file, you cannot cause extract to ignore strings in comments that are longer than one line. You can specify only one rewrite string for all classes of pattern matches. The extract command does not extract strings from files you include with the #include directive. You must run the extract commands on these files separately. Your terminal screen must contain at least 80 columns and 24 lines for extract to display its three windows. The extract command does not recognize strings that extend beyond one line. EXAMPLES
The following example shows the commands you issue to run the extract command, create a message catalog from the source message catalog, and compile the output source program: % extract -i newignore -p c_patterns remove.c % gencat remove.cat remove.msg % vi nl_remove.c % cc nl_remove.c In this example, the extract command uses the newignore file to determine which strings to ignore. The command uses the c_patterns file to determines which strings to match. The input source program is named remove.c. In response to this command, extract creates the source message catalog remove.msg and the output source program nl_remove.c. You must edit nl_remove.c to include the appropriate catopen and catclose function calls. The gencat command creates a message catalog and the cc command creates an executable program. SEE ALSO
gencat(1), mkcatdefs(1), strextract(1), strmerge(1), catopen(3), catgets(3), regexp(3), patterns(4) Writing Software for the International Market extract(1)
All times are GMT -4. The time now is 01:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy