Supprimer "n" caractères entre \

Fermé
bheadman Messages postés 105 Date d'inscription samedi 1 septembre 2007 Statut Membre Dernière intervention 17 septembre 2008 - 18 juil. 2008 à 15:05
bheadman Messages postés 105 Date d'inscription samedi 1 septembre 2007 Statut Membre Dernière intervention 17 septembre 2008 - 18 juil. 2008 à 17:41
Bonjour,

Pour commencé ceci n'a pas réellement d'intérêt pour moi c'est plus par curiosité.

Bon fallait faire court pour le titre mais voila l'explication complète :

Je cherche supprimer un nombres quelconques de caractères compris entre un tab et la fin de
la ligne, d'où le "\t" et le"$"

voici ma ligne de commande (je teste ça sur un ifconfig)

[root@srv41001 root]# ifconfig |awk -F":" '/Bcast/ { print $2 | "sed 's/.....$//'" }'
192.78.90.4

explication:
ifconfig = tout le monde connais
awk -F":" = j'utilise le séparateur de champs :
/Bcast/ = match la ligne contenant les @ ip / Bcast / Masque
print $2 = je récupère le champs "192.78.90.4 Bcast"
sed ... = me permet de supprimer les 5 derniers caractère de la ligne

C'est sur ce dernier point que ça bloque je souhaiterais supprimer tous les caractères
compris entre la fin de l'@ et la fin de la ligne et ce quelque soit le nombre (n caractères)

Merci d'avance

PS je suis également ouvert à toute autre solution me permétant de récupérer mes IPs
A voir également:

2 réponses

bheadman Messages postés 105 Date d'inscription samedi 1 septembre 2007 Statut Membre Dernière intervention 17 septembre 2008
18 juil. 2008 à 15:16
Voici une autre solution, faut juste que je trouve comment exploiter le résultat :D

[root@srv41001 root]# ifconfig |awk '/Bcast/ { for (i=2;i<=4;i++ )print $i}'
adr:192.78.90.4
Bcast:192.78.90.255
Masque:255.255.255.0

C'est mieux car en plus j'ai le nom fournis avec l'IP :D

Je vous tiens au courrant.


Je suis toujours intéressé par la solution au problème d'origine, à savoir supprimer les n caractères compris entre "regexp" et "$"
0
bheadman Messages postés 105 Date d'inscription samedi 1 septembre 2007 Statut Membre Dernière intervention 17 septembre 2008
18 juil. 2008 à 17:41
Voici une autre solution :

#!/usr/bin/perl -w
# Generate the IP#, router, and subnet mask by running the "ipconfig" command.
# Run ipconfig and dump its contents to ipdump.

open(IPNUM,"|ifconfig > ipdump") || die "Can't run 'ifconfig'...$!\n";
close(IPNUM);

# Open the dump file
open(IPNUM,"ipdump") || die "Can't open ipdump...$!\n";

# Parse out the lines with ip numbers
while ( <IPNUM>  )  {
 chomp;
 if ( $_ =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) {
   push (@ipconf,split(/\D+/,$_));
 }
}

my $IPAdws2;
my $SubnetMsk2;
my $Router2;
$IPAdws2 =  "$ipconf[1]." . "$ipconf[2]." . "$ipconf[3]." . $ipconf[4];
$SubnetMsk2 = "$ipconf[5]." . "$ipconf[6]." . "$ipconf[7]." . $ipconf[8];
$Router2 = "$ipconf[9]." . "$ipconf[10]." . "$ipconf[11]." .$ipconf[12];
print "Adresse ip : \t$IPAdws2\nBcast : \t$SubnetMsk2\nMasque : \t$Router2\n"
0