sed-hilfe!

flappinski

flappinski

Foren As
Sorry, ich komme mal wieder nicht weiter. Ich will von einer Dateigruppe die Zeilen 11-61 in eine Datei rausschreiben und dabei noch den Dateinamen vorraussetzen:


dieses hier:
ls *Nsp* | while read file ; do head -61 $file | tail -50 | sed 's!.*!$file\t&!' >> comp/bbb; done;

macht sowas (also wird $file nicht übersetzt):
$file AFFX-2315047 1 0.00409425
$file AFFX-2315048 0 0.00457308

wenn ich statt einfach ' doppelt " benutze bekommen ich folgende Fehlermeldung:

-bash: !.*!$file\t: event not found

Könnt ihr mir da helfen?

Danke,
Stephan
 
Lösung gefunden.

habe die Lösung gefunden, und zwar muss ich / statt ! in der sed-Anweisung verwenden. Weiss jemand, warum das plötzich so ist?
 
Code:
sed -n "11,61 s/^/$file /p" $file

Gruss, Xanti

edit: Bezüglich Deiner zweiten Frage: Damit die Shell die Variable $file substituiert, muss der Ausdruck in "..." eingeschlossen werden. Allerdings interpretiert die Shell dann auch das reservierte Wort ! (nämlich als logische Negation).

Gruss, Xanti
 
Zuletzt bearbeitet:
jep.
Danke Xanti, auch für die elegantere sed-Anweisung. Es ist schon erstaunlich wieviele Wege nach Rom führen.....
 

Ähnliche Themen

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Variableninhalt wird nicht gespeichert

Gleicher Befehl über Script -> Fehler?

Rollei Mini Wifi Camcorder

Zurück
Oben