[gelöst] sed wort ausschneiden/ausgeben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

[gelöst] sed wort ausschneiden/ausgeben

Beitrag von feldmaus » 16.03.2009 20:07:25

Hi Alle,

kann mir Jemand mal ein Beispiel zeigen und erklären wie man elegant
mit sed ein Wort aus einer Zeile ausgeben kann ?
Mein <sed Befehl> ist irgendwie zu lang . :(

Bis jetzt konnte ich das Wort zwar ausschneiden aber ich will es zum
Schluß auch ausgeben ohne den Rest der Zeile,

Code: Alles auswählen

ip addr show dev eth0 | sed -n -e 's/^\ *inet\ \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}.[0-9]\{1,3\}\).*/\1/p'
Von dieser Zeile will ich nur die IP Adresse, also das rote Wort,
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1d:92:ab:35:9f brd ff:ff:ff:ff:ff:ff
inet 169.254.47.51/16 brd 169.254.255.255 scope global eth0
inet6 fe80::21d:92ff:feab:359f/64 scope link
valid_lft forever preferred_lft forever
Leider habe ich keinen Hinweis gefunden, wie man eine Gruppe bei sed negieren kann,
allerdings habe ich ein nicht funktionierendes Beispiel mit dem Steuerzeichen <@>
gefunden, was ich auch in noch nicht in der sed Doku gefunden habe. :-(
http://sed.sourceforge.net/#docs

Grüße Markus
Zuletzt geändert von feldmaus am 17.03.2009 02:51:32, insgesamt 1-mal geändert.

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: sed wort ausschneiden/ausgeben

Beitrag von feldmaus » 17.03.2009 02:48:54

Und für die netmask,

Code: Alles auswählen

ip addr show dev eth0 | sed -n -e 's/^\ *inet\ .*\/\([0-9]\{1,2\}\).*/\1/p'
Man muss mit Gruppierungen und Referencen von Gruppierungen arebeiten.

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] sed wort ausschneiden/ausgeben

Beitrag von Meillo » 17.03.2009 10:47:18

Code: Alles auswählen

$ ip addr show dev eth0 |  grep '^inet ' | cut -d' ' -f2 | cut -d'/' -f1
169.254.47.51

$ ip addr show dev eth0 | grep '^inet ' | cut -d' ' -f2 | cut -d'/' -f2
16
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] sed wort ausschneiden/ausgeben

Beitrag von Duff » 17.03.2009 10:59:40

@Meillo: Du greifst hier nicht auf sed oder awk zurück ;-) :mrgreen:
Oh, yeah!

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: [gelöst] sed wort ausschneiden/ausgeben

Beitrag von feldmaus » 17.03.2009 12:14:38

Duff hat geschrieben:@Meillo: Du greifst hier nicht auf sed oder awk zurück ;-) :mrgreen:
:lol:
Damit könnte ich noch leben. Das schlimmere Problem wäre:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:1d:92:ab:35:9f brd ff:ff:ff:ff:ff:ff
inet 169.254.47.51/16 brd 169.254.255.255 scope global eth0
inet6 fe80::21d:92ff:feab:359f/64 scope link
valid_lft forever preferred_lft forever
4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
inet 92.76.231.205 peer 92.76.224.1/32 scope global ppp0
Wie man sieht gibt es manchmal ein </ZAHL> gleich nach der IP und
manchmal nicht. Die Maske will ich auch haben und ist bei ppp0
weiter hinten.

Grüße Markus

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] sed wort ausschneiden/ausgeben

Beitrag von Meillo » 17.03.2009 13:46:42

Duff hat geschrieben:@Meillo: Du greifst hier nicht auf sed oder awk zurück ;-) :mrgreen:
Man muss flexibel bleiben ;-)
Use ed once in a while!

Antworten