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 ?
Problem mit sed, grep, ...
pipe-Bau
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
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
Pipe Teil 2
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
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
Re: Problem mit sed, grep, ...
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-->
<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-->