Hallo, eine Datei, die ich durch die Befehle grep und awk erzeuge, sieht folgendermaßen aus: 192.168.0.28 192.168.0.200 192.168.0.201 192.168.0.202 192.168.0.203 diese müsste aber zusätzlich noch in 192.168.0.28 192.168.0.200 192.168.0.201 192.168.0.202 192.168.0.203 geändert werden. (also keine Leerzeichen am Anfang) Kann mir jemand helfen, da hierfür meine Kenntnisse mit grep und awk noch nicht ausreichen? -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Hallo Dieter, * Dieter schrieb am 05.12.2003:
Hallo,
eine Datei, die ich durch die Befehle grep und awk erzeuge, sieht folgendermaßen aus:
192.168.0.28 192.168.0.200 192.168.0.201 192.168.0.202 192.168.0.203
diese müsste aber zusätzlich noch in
192.168.0.28 192.168.0.200 192.168.0.201 192.168.0.202 192.168.0.203
geändert werden. (also keine Leerzeichen am Anfang)
Kann mir jemand helfen, da hierfür meine Kenntnisse mit grep und awk noch nicht ausreichen?
sed -n 's/^[[:space:]]*//p' datei > neuedatei -n silent s/re/b/ Ersetze ("substitute") Zeilen, die auf den regulären Ausdruck "re" passen durch den Text "b". Das "p" entwpricht einem "print" des Ergebnisses in beiden Fällen, wenn der Regex "re" passte und nicht passte. ^ Zeilenanfang [[:space:]] Whitespaces, d.h. Leerzeichen und Tabulatoren [[:space:]]* Der * steht für eine Anzahl >= 0. Lösche alle führenden Whitespaces am Zeilenanfang. Grüße, Tom
Hi Tom, Am Freitag, 5. Dezember 2003 01:24 schrieb Thomas Preissler:
sed -n 's/^[[:space:]]*//p' datei > neuedatei
Und wiedereinmal rechtherzlichen Dank für deine Hilfe und Erklärungen :-)) -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Am Freitag, 5. Dezember 2003 00:51 schrieb Dieter Kroemer:
eine Datei, die ich durch die Befehle grep und awk erzeuge, sieht folgendermaßen aus:
192.168.0.28 192.168.0.200 192.168.0.201 192.168.0.202 192.168.0.203
diese müsste aber zusätzlich noch in
192.168.0.28 192.168.0.200 192.168.0.201 192.168.0.202 192.168.0.203
geändert werden. (also keine Leerzeichen am Anfang)
Kann mir jemand helfen, da hierfür meine Kenntnisse mit grep und awk noch nicht ausreichen?
Ich weiss nicht, wie Du den awk einsetzt, aber der kann sowas eigentlich von Haus aus. Wenn Du mal das awk-Script zeigst, kann Dir sicher geholfen werden. Als Lösung bis dahin: Pipe die Ausgaben von awk an einen sed: grep ... | awk ... | sed 's/^ *//' >datei BTW: auch ein grep ist im Zusammenhang mit awk selten nötig, der awk kann selbst Mustererkennung machen. Jan
Am Freitag, 5. Dezember 2003 01:27 schrieb Jan Trippler:
Als Lösung bis dahin: Pipe die Ausgaben von awk an einen sed:
grep ... | awk ... | sed 's/^ *//' >datei
Na da hätte ich auch selber drauf kommen können, allerdings sind anscheinend auch tab-stopps dabei, sodass diese Lösung nicht ganz funktioniert (habe ich vorher leider nicht gewusst :-(). Aber die Lösung von Tom funktioniert. Vielen Dank für deine Hilfe :-)
BTW: auch ein grep ist im Zusammenhang mit awk selten nötig, der awk kann selbst Mustererkennung machen.
Da ich gerne dazulerne, poste ich mal meinen Befehle und würde mich freuen zu hören, wie es eleganter geht ;-) cat /etc/dhcpd.conf|grep fix|awk -F"ss" '{print $2}'|awk -F";" '{print $1}'|sed -n 's/^[[:space:]]*//p' > /tmp/ausgelesene_ip -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Hallo Dieter, On Fri, Dec 05, 2003 at 02:03:05PM +0100, Dieter Kroemer wrote:
Da ich gerne dazulerne, poste ich mal meinen Befehle und würde mich freuen zu hören, wie es eleganter geht ;-)
cat /etc/dhcpd.conf|grep fix|awk -F"ss" '{print $2}'|awk -F";" '{print $1}'|sed -n 's/^[[:space:]]*//p' > /tmp/ausgelesene_ip
awk '/fixed-address/ {printf("%s\n",$2)}' /etc/dhcpd.conf Greetings Daniel -- A bird in the bush usually has a friend in there with him.
Am Freitag, 5. Dezember 2003 17:43 schrieb Daniel Lord:
awk '/fixed-address/ {printf("%s\n",$2)}' /etc/dhcpd.conf
Das sieht doch schon schöner aus :-) allerdings steht am Ende der IP noch der ";", der auch noch weg müsste (also z.B. 192.168.0.200;) bekommt man den auch durch einen awk-aufruf weg oder muss ich doch ein weiteres Mal pipen? -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Am Freitag, 5. Dezember 2003 19:24 schrieb Dieter Kroemer:
Am Freitag, 5. Dezember 2003 17:43 schrieb Daniel Lord:
awk '/fixed-address/ {printf("%s\n",$2)}' /etc/dhcpd.conf
Das sieht doch schon schöner aus :-) allerdings steht am Ende der IP noch der ";", der auch noch weg müsste (also z.B. 192.168.0.200;) bekommt man den auch durch einen awk-aufruf weg oder muss ich doch ein weiteres Mal pipen?
awk '/fixed-address/ {printf("%s\n",substr($2,0,length($2)-1))}' \ /etc/dhcpd.conf Jan
Hallo, Am Fri, 05 Dec 2003, Dieter Kroemer schrieb:
Da ich gerne dazulerne, poste ich mal meinen Befehle und würde mich freuen zu hören, wie es eleganter geht ;-)
cat /etc/dhcpd.conf|grep fix|awk -F"ss" '{print $2}'|awk -F";" '{print $1}'|sed -n 's/^[[:space:]]*//p' > /tmp/ausgelesene_ip
awk ' /fixed-add/ { gsub("; *$","",$2); print $2; }' /etc/dhcpd.conf > /tmp/ausgelesene_ip Falls doch noch spaces am Anfang auftauchen sollten: awk '/fixed-add/ { gsub("; *$","",$2); gsub("^[[:space:]]*","",$2); print $2; }' /etc/dhcpd.conf > /tmp/ausgelesene_ip Siehe: man -P'less +/Patterns' awk; man -P'less +/gsub.r' awk -dnh --
Ich hätte auch nie geglaubt, das es 10 Minuten dauern kann, bis jemand ohne Fehler einmal ein lspci -v fehlerfrei eingegeben hat. Hast Du auch erwähnt, daß man anschließend die RETURN-Taste drücken muß? [> Torsten Hallmann und Bernd Brodesser in suse-linux]
participants (5)
-
Daniel Lord
-
David Haller
-
Dieter Kroemer
-
Jan.Trippler@t-online.de
-
Thomas Preissler