sed ifconfig ipv4 adresse filtern

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von angelsfall, 09.07.2007.

  1. #1 angelsfall, 09.07.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Hallo,

    ich wollte gerne mit Hilfe von sed meine IPv4-Adresse auf dem eth0-Device aus der Ausgabe von ifconfig filtern lassen. (Ich weiss, das geht auch mit grep und cut, aber darum gehts hier nicht.)
    Bisher mache ich es so:
    Code:
    ifconfig | sed -ne '/^eth0/,/^$/p' | sed -ne 's/\s\+inet\sAdresse:\([^ ]\+\).*/\1/p'
    Ich wundere mich grade, ob das nicht auch mit nur einer sed-Instanz geht?

    Ich dachte da an sowas (natürlich funkioniert es nicht :))
    Code:
    ifconfig | sed -ne "s/^eth0.\+\n\s\+inet\sAdresse:\([^ ]\+\).*/\1/p"
    Vielleicht hat jemand eine Idee?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Code:
    ifconfig  | sed -n '/^eth0/{n;s/.*addr:\(.*\)\sBcast.*/\1/;p;q}'
     
  4. #3 angelsfall, 09.07.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Danke, aber das funktioniert bei mir nicht, es gibt die ganze Zeile aus.
     
  5. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Zeig mal Ausgabe von ifconfig bei dir bitte, denn bei mir geht es. :)
     
  6. #5 angelsfall, 09.07.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Ok funktioniert. Mein Ubuntu ist echt Deutsch, da wird dann auch Adresse geschrieben und nicht "addr" :)

    Kannst du das bitte noch erläutern?
     
  7. #6 smg, 09.07.2007
    Zuletzt bearbeitet: 09.07.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Code:
    ifconfig  | sed -n '/^eth0/{n;s/.*[Aa]ddr[^:]*:\(.*\)\s[Bb][^:]*cast.*/\1/;p;q}'

    Code:
    sudo ifconfig  | sed -n '/^eth0/ # Sucht nach eth0 am Anfang
    {  # Alle Aktionen werden nur für die getroffene Zeile (eth0 am Anfang) durchgeführt
    n # Nächste Zeile einlesen (Zeile die eth0 trifft überspringen)
    s/.*[Aa]ddr[^:]*:\(.*\)\s[Bb][^:]*cast.*/\1/ # Substitution durchführen (sollte nun auch mit Addresse und Broadcast gehen
    p # Ausgeben der bearbeiteten Zeile
    q # Stoppen (sed beenden, da der Rest sowieso uninteressant ist)
    }'
    
     
  8. #7 Ale-x, 09.07.2007
    Zuletzt bearbeitet: 09.07.2007
    Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    ich finde das immer sehr kompliziert und für anfänger nicht nachvollziehbar ich finde da das besser *gg

    Code:
    ifconfig | grep Bcast | awk -F: '{print $2}' | awk '{print $1}'
     
  9. #8 angelsfall, 10.07.2007
    Zuletzt bearbeitet: 10.07.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    @smg: Danke für die Erläuterung. Sowas wie das "n" hatte ich gesucht!
    Aber wenn du die Substitution nur auf die eine Zeile anwendest, kann man sich das "q" doch sparen, oder ist das aus Performancegründen? Und wieso ist vor dem "p" noch ein ";"?

    Aber danke für deine Hilfe. Ich habe es jetzt so:
    Code:
    ifconfig | sed -n '/^eth0.*/{n;s/.*inet\sAdresse:\([^ ]\+\).*/\1/p}'
    p.s.: Ubuntu schreibt "Adresse" ganz aus. Es wird im Deutschen ja auch nur mit einem "d" geschrieben, nicht wie im Englischen mit zweien. Aber das nur am Rande :)

    @Ale-x: Danke auch für deinen Hinweis. Bisher hatte ich es immer so (ganz schlimme Variante, nicht kopieren! ;)):
    Code:
    ifconfig | grep inet | head -n 1 | cut -d : -f 2 | cut -d ' ' -f 1
    Aber hey, es geht ja um den Lerneffekt ;)

    {edit}
    Man kanns natürlich einfacher machen. Aber ich muss mal wieder kompliziert denken ;)
    Code:
    ifconfig eth0 | sed -n 's/.*inet Adresse:\([^ ]\+\).*/\1/p'
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Stimmt q kann man sich sparen, der mit dem Semikolon vor derm p ist egal. Ich sehe das p lieber als eigenes Kommando als Zusatz vom s/// Operator.

    @Ale-x:
    Na ja dein Ausdruck ist ziemlich _inperformant_ de facto, obwohl er natürlich immer noch schnell genug ist (insb. die Pipes / Subshells).
     
  12. #10 Wolfgang, 10.07.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hier ist sed eindeutig die bessere Lösung (1 Prozess).
    Die grep cut Variante braucht 4 Prozesse.
    Im Übrigen ist es durchaus sinnvoll sich mit sed und Perl respektive reguläre Ausdrücken auseinanderzusetzen.

    Dann ist das alles nicht so kryptisch wie es scheint.

    Gruß Wolfgang
     
Thema:

sed ifconfig ipv4 adresse filtern

Die Seite wird geladen...

sed ifconfig ipv4 adresse filtern - Ähnliche Themen

  1. kein /dev/eth0 vorhanden aber ifconfig zeigt es an?

    kein /dev/eth0 vorhanden aber ifconfig zeigt es an?: Morgen zusammen, ich hab hier unter openSuse 10.2 ein komisches Phänomen: ls -al /dev/e* ls: cannot access /dev/e*: No such file or...
  2. Kein eth0 in ifconfig - nur "lo"

    Kein eth0 in ifconfig - nur "lo": Habe mit Knoppix eine funktionierende Internet Verbindung über LAN (eth0), wollte nun DamnSmallLinux 3.1 RC1 ausprobieren und habe festgestellt...
  3. Falsche(?) Ausgabe von 'ifconfig'

    Falsche(?) Ausgabe von 'ifconfig': Hallo zusammen Ich habe ein Problem, das mich ein Bisschen verwirrt. Ich bin Netzwerktechnisch nicht sehr sattelfest, darum habe ich keine...
  4. Bytezähler von ifconfig zurücksetzen

    Bytezähler von ifconfig zurücksetzen: Hallo, gibt es eine Möglichkeit, den Bytezähler der Ausgabe von beispielsweise /sbin/ifconfig eth0 auf Null zurück zu setzen? Hier seht ihr,...
  5. wo speichert ifconfig die IP (disti spezifisch?)

    wo speichert ifconfig die IP (disti spezifisch?): Hi Ich sitz hier grad im Linux Kurs inner Schule und wir machen gerade "erste Schritte im Netzwerk". Bissl langweilig, aber gerade sind wir zur...