Hi,
Anyone has some ways for the following text processing problem? I have a text file containing two stanzas attached below. I want to uncomment the stanza with 'host=localhost' line, while left the other stanza unchanged.
...
/* udp_send_channel { host=localhost port = 10017 ttl = 1 } */
/* udp_send_channel { host=ganglia100.ec2.example.com port = 10017 ttl = 1 } */
...
If I use command below then both stanza will be altered... Please help.
sed -i -e '/^/* udp_send_channel/, /} *// {s/^/* udp_send_channel/udp_send_channel/g; s/} *//}/g; }'
--David
this is probably WAY more than you wanted but it does work, save your 2 stanzas as 'file' and run this program:
#! /usr/bin/perl -w use strict;
open FILE,"file" or die;
my $stanzaFlag = 0; my @buffer = (); my ($x, $i);
while (<FILE>) { $i = $_; # see if this line has /* if yes, start saving the stanza in buffer if (index ($i,'/*') >= 0) { $stanzaFlag = 1; } # put it into the buffer if ($stanzaFlag == 1) { $buffer[$x++] .= $i; } # see if we are done with this stanza if (index ($i,'*/') >= 0) { $stanzaFlag = 0; # get rid of the comments. if (index($buffer[1],'localhost') >= 0) { $buffer[0] =~ s//*//; $buffer[4] =~ s/*///; } print "@buffer\n"; @buffer = (); $x = 0; } }
__________________________________________________ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! Regístrate ya - http://correo.yahoo.com.mx/