Today (Saturday) We will make some minor tuning adjustments to MySQL.

You may experience 2 up to 10 seconds "glitch time" when we restart MySQL. We expect to make these adjustments around 1AM Eastern Daylight Saving Time (EDT) US.


Using sed to extract line of a file


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Using sed to extract line of a file

Ok .. This is driving me nuts. I suppose I need another set of eyes.

Example Data
Code:
interface Vlan1
 description xxxxxxxxxxxx
 ip address 192.168.1.1 255.255.255.252
 no ip redirects
 no ip proxy-arp
 ip flow ingress
 ip pim sparse-mode
 load-interval 30
!
interface Vlan2
 description xxxxxxxxxxxx
 ip address 192.168.120.106 255.255.255.252
 no ip redirects
 no ip proxy-arp
 ip flow ingress
 ip pim sparse-mode
 load-interval 30
!
interface Vlan3
 description xxxxxxxxxxxx
 ip address 192.168.201.3 255.255.255.0
 ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194
 no ip redirects
 no ip proxy-arp
 ip pim sparse-mode
 standby 0 ip 192.168.201.1
 standby 0 timers 1 3
 standby 0 authentication baronet2
!
interface Vlan4
 description xxxxxxxxxxxx
 ip address 192.168.120.110 255.255.255.252
 no ip redirects
 no ip proxy-arp
 ip flow ingress
 ip pim sparse-mode
 load-interval 30
!
interface Vlan5
 description xxxxxxxxxxxx
 ip address 192.168.202.3 255.255.255.0
 ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194
 no ip redirects
 no ip proxy-arp
 ip pim sparse-mode
 standby 0 ip 192.168.202.1
 standby 0 timers 1 3
 standby 0 priority 105
 standby 0 preempt

The Results I am looking for is / are :

Interface and ip helper addresses associated with that interface

Code:
interface Vlan603
  ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194
 

interface Vlan604
  ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194
 etc 
 etc

I thought I solved this once before .. but lost some stuff in a new work laptop transition.

Any help would be appreciated.

POP
# 2  
How about
Code:
awk '/^ *interface/ {IF = $0} /helper/ {if (IF) print IF; IF = ""; print}' file
interface Vlan3
 ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194
interface Vlan5
 ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194

EDIT: or, with sed,

Code:
sed -n '/^ *interface/ { :L1; x; /helper/ p; n; }; :L2; /helper/ {H; n; bL2; }; $ bL1;' file


Last edited by RudiC; 05-08-2019 at 10:34 AM..
This User Gave Thanks to RudiC For This Post:
# 3  
grep is simple stupid, but maybe good enough?
Code:
grep -E "interface|ip helper-address" file

--- Post updated at 20:20 ---

A simple sed solution (works like the awk sample in post #2)
Code:
sed '/interface/x; /ip helper-address/!d; x; /./p; s/.*//; x' file

This User Gave Thanks to MadeInGermany For This Post:
# 4  
Code:
$ awk -F'\n' ' $0 ~ /interface.*helper-address/ { print $1,$4, $5, $6, $7 } ' RS='!\n' OFS="\n" file
interface Vlan3
 ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194
interface Vlan5
 ip helper-address 192.168.228.188
 ip helper-address 192.168.97.199
 ip helper-address 192.168.133.140
 ip helper-address 192.168.152.194

# 5  
Quote:
Originally Posted by anbu23
Code:
$ awk -F'\n' ' $0 ~ /interface.*helper-address/ { print $1,$4, $5, $6, $7 } ' RS='!\n' OFS="\n" file

Interesting separator technique, but seems to only work with GNU awk.
And, of course, the positions and amounts of the "helper-address" lines may vary...
# 6  
Just another way to do the same

Code:
awk '/^interface/{i=$0}/helper/{ print ((i!=z)?i RS:z) $0 ; i=z }' yourfile

Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
sed or awk, cut, to extract specific data from line
ocramas
Hi guys, I have been trying to do this, but... no luck so maybe you can help me. I have a line like this: Total Handled, Received, on queue Input Mgs: 140 / 14 => 0 I need to, get the number after the / until the =, to get only 14 . Any help is greatly appreciated. Thanks,... Shell Programming and Scripting
4
Shell Programming and Scripting
HELP: Shell Script to read a Log file line by line and extract Info based on KEYWORDS matching
biztank
I have a LOG file which looks like this Import started at: Mon Jul 23 02:13:01 EDT 2012 Initialization completed in 2.146 seconds. -------------------------------------------------------------------------------- -- Import summary for Import item: PolicyInformation...... Shell Programming and Scripting
8
Shell Programming and Scripting
Extract a number from a line in a file and sed in another copied file
mnaqvi
Dear all, I am trying to extract a number from a line in one file (task 1), duplicate another file (task 2) and replace all instances of the strings 300, in duplicated with the extracted number (task 3). Here is what I have tried so far: for ((k=1;k<4;k++)); do temp=`sed -n "${k}p"...... Shell Programming and Scripting
2
Shell Programming and Scripting
get the fifth line of a text file into a shell script and trim the line to extract a WORD
venu
FOLKS , i have a text file that is generated automatically of an another korn shell script, i want to bring in the fifth line of the text file in to my korn shell script and look for a particular word in the line . Can you all share some thoughts on this one. thanks... Venu... Shell Programming and Scripting
3
Shell Programming and Scripting
Using sed to extract a substring at end of line
figaro
This is the line that I am using: sed 's/^*\({3}*$\)/\1 /' <test.txt >results.txt and suppose that test.txt contains the following lines: http://www.example.com/200904/AUS.txt http://www.example.com/200903/_RUS.txt http://www.example.com/200902/.FRA.txt What I expected to see in results.txt...... UNIX for Dummies Questions & Answers
6
UNIX for Dummies Questions & Answers

Featured Tech Videos