Supprimer "n" caractères entre \

bheadman Messages postés 105 Statut Membre -  
bheadman Messages postés 105 Statut Membre -
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

--
Le cerveau est un muscle, la bibliothèque une salle de musculation et le SMS le Mcdo de l'intelligence !!!
Configuration: Windows XP
Firefox 3.0.1

2 réponses

  1. bheadman Messages postés 105 Statut Membre 1
     
    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
  2. bheadman Messages postés 105 Statut Membre 1
     
    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