Problem mit sed, grep, ...

Post Reply
Message
Author
Thomas Gern

Problem mit sed, grep, ...

#1 Post by Thomas Gern »

Ich möchte aus einem Kernelpatch die Dateinamen (mit Pfad) herausfiltern.

Ausgabe sollte aussehen wie:
linux/CREDITS
linux/Documentation/Configure.help
linux/Documentation/DMA-mapping.txt
...

mit grep 'diff -u' $1 >$1.changed bekomme ich zwar folgende Ausgabe, komme aber mit sed nicht weiter:

diff -u --recursive --new-file v2.3.46/linux/CREDITS linux/CREDITS
diff -u --recursive --new-file v2.3.46/linux/Documentation/Configure.help linux/Documentation/Configure.help
diff -u --recursive --new-file v2.3.46/linux/Documentation/DMA-mapping.txt linux/Documentation/DMA-mapping.txt
...

Wie muss das noch mit sed gefiltert werden damit die Ausgabe stimmt ?

tux
Posts: 14
Joined: 14. Aug 1999 21:29
Location: Nähe Hamburg
Contact:

pipe-Bau

#2 Post by tux »

Hi Thomas,
Hab meine Unterlagen grad nicht dabei, deshalb kann ich Dir den Sed-Befehl nicht nennen,
aber was du vorher benötigst ist cut.
Damit kannst Du Spaltenweise "ausschneiden".
Häng an Deinen grep-Befehl mal ein
| cut -d' ' -f5
an, dann sollte die 5te Spalte(mit " " als Spaltentrennzeichen) ausgegeben werden, etwa so:

v2.3.46/linux/CREDITS
v2.3.46/linux/Documentation/Configure.help linux/Documentation/Configure.help
v2.3.46/linux/Documentation/DMA-mapping.txt linux/Documentation/DMA-mapping.txt

JETZT muss sed nochmal ran um "v2.3.46" rauszuschmeissen, ich melde mich ggf. morgen nochmal.
Gruß, TUX

tux
Posts: 14
Joined: 14. Aug 1999 21:29
Location: Nähe Hamburg
Contact:

Pipe Teil 2

#3 Post by tux »

Hi Thomas,

nun kommt sed zum Zuge:
| sed ´s/v\.3\.46//´

Zum Prinzip:
/muster/wird ersetzt durch dieses hier/
im Beispiel also /v.3.46/ durch // , also nix.
die \ sind nötig, damit der folgende Punkt nicht als Befehl interpretiert wird.

Klappts ?
Wenn nicht oder bei Fragen bitte nochmal melden.
(kanns grad nicht selbst testen, da ich an einer WinDose sitze).

Gruß, TUX

Thomas Gern

Re: Problem mit sed, grep, ...

#4 Post by Thomas Gern »

Danke TUX

<font face="Courier New">
grep 'diff -u' $1 | cut -d' ' -f5 | sed 's/v2\.3\.46//' >$1.changed
</font><!--fixed-->

Wenn ich das mit cut richtig verstanden habe, reicht dann nicht auch folgendes ?

<font face="Courier New">
grep 'diff -u' $1 | cut -d' ' <b>-f6</b> >$1.changed
</font><!--fixed-->

Post Reply