Hallo, Am Fr, 2004-03-12 um 03.53 schrieb David Haller: [...]
*urgsl*
useless use of grep, useless use of sed.
Eine Kette wie grep foo | sed '...' ist _immer_ ueberfluessig und durch:
sed '/foo/{ ...; }'
ersetzbar.
Als leider zu lange Jahre Window$-GUI Geschädigter beginne ich erst, die wunderbaren Eigenschaften und die Macht der Shell und ihrer Tools zu nutzen. Da gelingt halt noch nicht auf Anhieb alles perfekt. Trotzdem danke für den Tip!
Ebenso ist sed 'aaa' | sed 'bbb' immer durch ein einzelnes sed ersetzbar, und sei's mittels sed -e 'aaa' -e 'bbb', meist geht aber sed -e 'aaa;bbb;'.
find . -type f -print0 \ | xargs -0 file \ | sed -n '/tar archive/s/^\([^:]\+\): .*/\1/p' \ | while read f; do \ test -r "$f" && tar -C <zieldir> -xvf "$f"; \ done
Obiges klappt mit fast allen Dateinamen (mit Zeilenumbruechen klappt's nicht).
Ok, ich werde mal über "sed -n '/tar archive/s/^\([^:]\+\): .*/\1/p'" brüten und versuchen zu verstehen... -- Grüsse Marco