2017-12-04 4 views
0

Ich habe eine ASCII-Textdatei mit nur einer (langen) Zeile drin. Ich möchte eine normale sed machen, aber nichts funktioniert. vi zeigt mir mit: set list, dass die Zeile mit einem $ endet Wenn ich eine neue Zeile manuell mit vi hinzufügen, funktioniert der Befehl sed. Wenn ich dies tue:sed in einer ASCII-Datei ohne Zeilenvorschub

echo $(cat file) |sed 's/.*test//g' 

es funktioniert auch. Irgendeine Idee warum sed kann nicht damit arbeiten?

+0

Sorry, bearbeitet es. Ich möchte nur einen Ersatz machen –

Antwort

0

Der Befehl echo $(cat file) wird den Leerraum nicht sehr gut erhalten.

Sie sollten in der Lage sein, eine neue Zeile hinzufügen, während der Rest der Datei unangetastet bleiben, ganz einfach mit:

(cat inputFile ; echo) | sed 'something or other' 

Denken Sie daran, dass einigesed Implementierungen nicht wirklich wie sehr lange Zeilen. POSIX, glaube ich, hat nur eine Mindestanforderung von 8K vorgeschrieben. Sie sollten jedoch in Ordnung sein, wenn Sie die GNU-Variante verwenden.

+0

Warum verwenden Sie 'printf \ \ n" 'anstelle eines einfachen' echo' ohne Parameter? Statt einer '(...)' Untershell, Befehlsgruppierung mit '{...; } 'wird genauso gut funktionieren – janos

Verwandte Themen