Supprimer "n" caractères entre \

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. 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
    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