Looking for an awk command to print strings only if substring is missing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Looking for an awk command to print strings only if substring is missing
# 15  
Old 04-07-2014
Hi.

Changing the final grep in my solution to:
Code:
grep -A1 "interface"

produces:
Code:
 Results:
interface 1/1/1/1 move-group
     decription one one one one
--
interface 1/1/1/3 move-group
     decription one one one three

Where the removal of the separator line if desired is left as an exercise.

Best wishes ... cheers, drl
# 16  
Old 04-07-2014
Thank you for the input DRL, but I do not have that grep option A1 on my server.
# 17  
Old 04-07-2014
Just also print $2 and an empty line:
Code:
awk '/^interface/{print x}1' file |
awk '!/filter-shared 14/ && /move-group/{print $1; print $2; print x}' FS='\n' RS=

# 18  
Old 04-07-2014
Hi.
Quote:
Originally Posted by numele
Thank you for the input DRL, but I do not have that grep option A1 on my server.
There is a perl version of grep called peg available at: http://www.cpan.org/authors/id/A/AD/ADAVIES/peg-3.10 , so using peg -A1 "interface" in place of the grep produces:
Code:
 Results:
interface 1/1/1/1 move-group
     decription one one one one
--
interface 1/1/1/3 move-group
     decription one one one three

Best wishes ... cheers, drl
# 19  
Old 04-07-2014
Scrutinizer, your solution works but it is so slow. I have 4400 large files to process and the awk statement I had been using was very fast. If I could just get it to add the next line, it would be perfect.
Code:
nawk 'END {if (!ok) print r} /interface/ && /move-group/ {if (!ok) print r; r = $0; ok = x}/filter-shared 14/ {r = r RS $0; ok++}' inputfile

# 20  
Old 04-08-2014
Try:
Code:
nawk '/interface/&&/move-group/{if(s)print s; s=x; n=2} n-->0{s=s $0 ORS} /filter-shared 14/{s=x; n=0} END{if(s)print s}' file


Last edited by Scrutinizer; 04-08-2014 at 10:27 AM..
This User Gave Thanks to Scrutinizer For This Post:
# 21  
Old 04-08-2014
Thank you Scrutinizer! You are Mr. AWK!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Match Strings between two files, print portions of each file together when matched ([g]awk)

I have two files and desire to use the strings from $1 of file 1 (file1.txt) as search criteria to find matches in $2 of file 2 (file2.txt). If matches are found I want to output the entire line of file 2 (file2.txt) followed by fields $2-$11 of file 1 (file1.txt). I can find the matches, I cannot... (7 Replies)
Discussion started by: jvoot
7 Replies

2. Shell Programming and Scripting

awk to print missing and keep sequential ordering if not found

The below awk in bold will look for the ids in file1 in $2 of file2 and if they match print the line in file2. If an id is missing or not found in file2 (like BMPR2 in line4 of file1) I can not figure out how to add it to them to the lines in the output as missing in $3 following the same format.... (4 Replies)
Discussion started by: cmccabe
4 Replies

3. UNIX for Beginners Questions & Answers

How to use awk to print strings with anchors?

I have a list of countries and I'm trying to print the country names that start with "A" and end in "a". I can do the first one which gives me the correct output. awk '/^A/ {print $1}' countries.txt but when I try: awk '/^A a$/ {print $1}' countries.txt or even: awk... (2 Replies)
Discussion started by: steezuschrist96
2 Replies

4. Shell Programming and Scripting

Print strings that match pattern with awk

I have a file with many lines which contain strings like .. etc. But with no rule regarding field separators or anything else. I want to print ONLY THE STRING from each line , not the entire line !!! For example from the lines : Flow on service executed with success in . Performances... (5 Replies)
Discussion started by: black_fender
5 Replies

5. Shell Programming and Scripting

awk to loop lines and print substring

The input data: mbeanName: com.sap.default:name=tc~bl~deploy_controller,j2eeType=SAP_J2EEServicePerNode,SAP_J2EEClusterNode=3620850,SAP_J2EECluster=XXX Get attribute Properties: {undepl_parallelism_strategy=normal, deployment_forbidden=off, locking_retries=50, suppress_ds_warnings=on,... (5 Replies)
Discussion started by: ux4me
5 Replies

6. Shell Programming and Scripting

Print lines between two strings multiple occurencies (with sed, awk, or grep)

Hello, I can extract lines in a file, between two strings but only one time. If there are multiple occurencies, my command show only one block. Example, monfichier.txt contains : debut_sect texte L1 texte L2 texte L3 texte L4 fin_sect donnees inutiles 1 donnees inutiles 2 ... (8 Replies)
Discussion started by: theclem35
8 Replies

7. Shell Programming and Scripting

awk strings search + print next column after match

Hi, I have a file filled with search strings which have a blank in between and look like this: S. g. Ehr. o. Jg. v. d. Chijs g. Ehr. Now i would like to search for the strings and it also shall return the next column after the match. awk -v FILE="search_strings.txt" 'BEGIN {... (10 Replies)
Discussion started by: sdf
10 Replies

8. Shell Programming and Scripting

Compare strings between 2 arrays and print number in AWK

Hi to everyone, Please some help over here. Hi have array a with 6 elements and array b with 3 elements as shown inside BEGIN{} statement. I need help to get the correct sintax (the part in red) to compare if string from array b is in array a and print the number related for each match.... (3 Replies)
Discussion started by: Ophiuchus
3 Replies

9. Shell Programming and Scripting

perl or awk print strings between words

hi everyone, 1.txt 981 I field1 > field2.a: aa, ..si01To:<f:a@a.com>From: <f:a@a.com>;tag=DVNgfRZBZRMi96 <f:a@1:333>;ZZZZZ: 12345 the output field1 field2 <f:a@a.com> the output is cut the string 3rd and 5th field, and get the value betwee "To:" and "From:", please advice. ... (1 Reply)
Discussion started by: jimmy_y
1 Replies

10. Shell Programming and Scripting

How to print only lines in between two strings using awk

Hi, I want to print only lines in between two strings and not the strings using awk. Eg: OUTPUT top 2 bottom 1 left 0 right 0 page 66 END I want to print into a new file only top 2 bottom 1 left 0... (4 Replies)
Discussion started by: jisha
4 Replies
Login or Register to Ask a Question