Sponsored Content
Top Forums Shell Programming and Scripting swapping lines that match a condition using sed, perl or the like Post 302352058 by TheBigAmbulance on Thursday 10th of September 2009 09:46:46 AM
Old 09-10-2009
swapping lines that match a condition using sed, perl or the like

I'm a bit new to regex and sed/perl stuff, so I would like to ask for some advice. I have tried several variations of scripts I've found on the net, but can't seem to get them to work out just right.

I have a file with the following information...

Code:
# Host 1
host 45583 {
    filename "junk1.cm";
    hardware ethernet 11:42:a3:d4:55:83;
    fixed-address 10.100.34.114;
    }
# Host 2
host D78C3 {
    filename "junk5.cm";
    fixed-address 10.100.34.117;
    hardware ethernet 11:42:a3:FD:78:C3;
    }
# Host 3
host 3A684 {
    filename "junk6.cm";
    fixed-address 10.100.34.119;
    hardware ethernet 11:42:a3:13:a6:84;
    }
# Host 4
host 46d54 {
    filename "junk4.cm";
    fixed-address 10.100.34.120;
    hardware ethernet 23:10:3d:14:6d:54;
    }

I have another script that is rearranging this just fine with one exception. The lines that have 'fixed-address' as the last line before the close bracket are working fine. The lines that have 'hardware ethernet' on them are causing my big script to misinterpret the information.

My desired result would be the following...

Code:
# Host 1
host 45583 {
    filename "junk1.cm";
    hardware ethernet 11:42:a3:d4:55:83;
    fixed-address 10.100.34.114;
    }
# Host 2
host D78C3 {
    filename "junk5.cm";
    hardware ethernet 11:42:a3:FD:78:C3;
    fixed-address 10.100.34.117;
    }
# Host 3
host 3A684 {
    filename "junk6.cm";
    hardware ethernet 11:42:a3:13:a6:84;
    fixed-address 10.100.34.119;
    }
# Host 4
host 46d54 {
    filename "junk4.cm";
    hardware ethernet 23:10:3d:14:6d:54;
    fixed-address 10.100.34.120;
    }

So what I'd like to build is a script that would search for 'fixed-address'. If it's followed by '}', do nothing. If it's followed by 'hardware ethernet', flip the lines 'fixed-address' and 'hardware ethernet'.

Does anyone have any advice on how they think that they would accomplish this? I'd appreciate any help that someone could provide.

Last edited by TheBigAmbulance; 09-10-2009 at 11:33 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

read and match multiple lines in perl

Could any one tell me how to read and match multiple lines in perl? Did this code below still work in this situation? while (<FILE>) { if (/ /) { } } Thanks a lot! (5 Replies)
Discussion started by: zx1106
5 Replies

2. Shell Programming and Scripting

Swapping or switching 2 lines using sed

I made a script that can swap info on two lines using a combination of awk and sed, but was hoping to consolidate the script to make it run faster. If found this script, but can't seem to get it to work in a bash shell. I keep getting the error "Too many {'s". Any help here would be appreciated:... (38 Replies)
Discussion started by: LaTortuga
38 Replies

3. Shell Programming and Scripting

Swapping lines beginning with certain words using sed/awk

I have a large file which reads like this: fixed-address 192.168.6.6 { hardware ethernet 00:22:64:5b:db:b1; host X; } fixed-address 192.168.6.7 { hardware ethernet 00:22:64:5b:db:b3; host Y; } fixed-address 192.168.6.8 { hardware ethernet 00:22:64:5b:db:b4; host A; }... (4 Replies)
Discussion started by: ksk
4 Replies

4. Shell Programming and Scripting

sed problem - delete all lines until a match on 2 lines

First of all, I know this can be more eassily done with perl or other scripting languages but, that's not the issue. I need this in sed. (or wander if it's possible ) I got a file (trace file to recreate the control file from oracle for the dba boys) which contains some lines another line... (11 Replies)
Discussion started by: plelie2
11 Replies

5. Shell Programming and Scripting

awk to print lines based on string match on another line and condition

Hi folks, I have a text file that I need to parse, and I cant figure it out. The source is a report breaking down softwares from various companies with some basic info about them (see source snippet below). Ultimately what I want is an excel sheet with only Adobe and Microsoft software name and... (5 Replies)
Discussion started by: rowie718
5 Replies

6. Shell Programming and Scripting

perl or awk remove empty lines when condition

Hi Everyone, # cat 1 a b b cc 1 2 3 3 3 4 55 5 a b (2 Replies)
Discussion started by: jimmy_y
2 Replies

7. Shell Programming and Scripting

Perl XML, find matching condition and grep lines and put the lines somewhere else

Hi, my xml files looks something like this <Instance Name="New York"> <Description></Description> <Instance Name="A"> <Description></Description> <PropertyValue Key="false" Name="Building A" /> </Instance> <Instance Name="B"> ... (4 Replies)
Discussion started by: tententen
4 Replies

8. Shell Programming and Scripting

Insert few lines above a match using sed, and within a perl file.

Greetings all, I am trying to match a string, and after that insert a few lines above that match. The string is "Version 1.0.0". I need to insert a few lines ONLY above the first match (there are many Version numbers in the file). The rest of the matches must be ignored. The lines I need to... (2 Replies)
Discussion started by: nagaraj s
2 Replies

9. UNIX for Dummies Questions & Answers

sed, join lines that do not match pattern

Hello, Could someone help me with sed. I have searched for solution 5 days allready :wall:, but cant find. Unfortunately my "sed" knowledge not good enough to manage it. I have the text: 123, foo1, bar1, short text1, dat1e, stable_pattern 124, foo2, bar2, long text with few lines, date,... (4 Replies)
Discussion started by: petrasl
4 Replies

10. Shell Programming and Scripting

sed read X lines after match

I want to do something like sed -n '/PATTERN/,+10p' and get the ten lines following PATTERN. However, this throws an "expected context address" with the sed that comes with OSX Lion. If that + is a GNUism, can I do this, or do I have to find another tool? (2 Replies)
Discussion started by: jnojr
2 Replies
ARPWATCH(8)						      System Manager's Manual						       ARPWATCH(8)

NAME
arpwatch - keep track of ethernet/ip address pairings SYNOPSIS
arpwatch [ -dN ] [ -f datafile ] [ -i interface ] [ -n net[/width ]] [ -r file ] [ -u username ] [ -e username ] [ -s username ] DESCRIPTION
Arpwatch keeps track for ethernet/ip address pairings. It syslogs activity and reports certain changes via email. Arpwatch uses pcap(3) to listen for arp packets on a local ethernet interface. The -d flag is used enable debugging. This also inhibits forking into the background and emailing the reports. Instead, they are sent to stderr. The -f flag is used to set the ethernet/ip address database filename. The default is arp.dat. The -i flag is used to override the default interface. The -n flag specifies additional local networks. This can be useful to avoid "bogon" warnings when there is more than one network running on the same wire. If the optional width is not specified, the default netmask for the network's class is used. The -N flag disables reporting any bogons. The -r flag is used to specify a savefile (perhaps created by tcpdump(1) or pcapture(1)) to read from instead of reading from the network. In this case, arpwatch does not fork. If -u flag is used, arpwatch drops root privileges and changes user ID to username and group ID to that of the primary group of username. This is recommended for security reasons. If the -e flag is used, arpwatch sends e-mail messages to username rather than the default (root). If a single `-' character is given for the username, sending of e-mail is suppressed, but logging via syslog is still done as usual. (This can be useful during initial runs, to collect data without being flooded with messages about new stations.) If the -s flag is used, arpwatch sends e-mail messages with username as the return address, rather than the default (root). Note that an empty arp.dat file must be created before the first time you run arpwatch. Also, the default directory (where arp.dat is stored) must be owned by username if -u flag is used. REPORT MESSAGES
Here's a quick list of the report messages generated by arpwatch(1) (and arpsnmp(1)): new activity This ethernet/ip address pair has been used for the first time six months or more. new station The ethernet address has not been seen before. flip flop The ethernet address has changed from the most recently seen address to the second most recently seen address. (If either the old or new ethernet address is a DECnet address and it is less than 24 hours, the email version of the report is suppressed.) changed ethernet address The host switched to a new ethernet address. SYSLOG MESSAGES
Here are some of the syslog messages; note that messages that are reported are also sysloged. ethernet broadcast The mac ethernet address of the host is a broadcast address. ip broadcast The ip address of the host is a broadcast address. bogon The source ip address is not local to the local subnet. ethernet broadcast The source mac or arp ethernet address was all ones or all zeros. ethernet mismatch The source mac ethernet address didn't match the address inside the arp packet. reused old ethernet address The ethernet address has changed from the most recently seen address to the third (or greater) least recently seen address. (This is similar to a flip flop.) suppressed DECnet flip flop A "flip flop" report was suppressed because one of the two addresses was a DECnet address. FILES
/usr/operator/arpwatch - default directory arp.dat - ethernet/ip address database ethercodes.dat - vendor ethernet block list SEE ALSO
arpsnmp(8), arp(8), bpf(4), tcpdump(1), pcapture(1), pcap(3) AUTHORS
Craig Leres of the Lawrence Berkeley National Laboratory Network Research Group, University of California, Berkeley, CA. The current version is available via anonymous ftp: ftp://ftp.ee.lbl.gov/arpwatch.tar.gz BUGS
Please send bug reports to arpwatch@ee.lbl.gov. Attempts are made to suppress DECnet flip flops but they aren't always successful. Most error messages are posted using syslog. 4th Berkeley Distribution 8 October 2000 ARPWATCH(8)
All times are GMT -4. The time now is 02:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy