Lösung:
sed -i '' 's/ :(float)//g' *
sed -i '' 's/[chuck]: cleaning up...//g' *
Erläuterung:
kann ich:
sed -ie 's/ :(float)//g' *
zu arbeiten, aber das erstellt Dateien, die die alten Dateien behalten.
Das ist, weil sed
‚s i
Flagge soll auf diese Weise e
-i extension
Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved.
In diesem Fall arbeiten wird als der Erweiterung interpretiert Sie Ihre Backups mit speichern möchten. So werden alle Ihre Originaldateien mit einem e
an ihren Namen angehängt gesichert.
Um eine Verlängerung der Länge Null zu erhalten, müssen Sie -i ''
verwenden.
Hinweis: Im Gegensatz zu -i<your extension>
funktioniert -i''
nicht. Sie müssen ein Leerzeichen zwischen -i
und ''
haben, damit es funktioniert.
Entfernen der -en Ergebnisse in ein nicht abgeschlossenen Ersatzmusterfehlern.
Wenn Sie die e
unmittelbar nach -i
entfernen, das heißt
sed -i 's/ :(float)//g' *
s/ :(float)//g
wird nun als Erweiterung Argument i
Flagge interpretiert werden.Und die erste Datei in der Liste der Dateien, die von Shell Erweiterung der *
produziert wird als sed function
(höchstwahrscheinlich s/regular expression/replacement/flags
Funktion) interpretieren Sie dies überprüfen können durch die Ausgabe von
Prüfung
sedfn=$(echo * | cut -d' ' -f1); [[ ${sedfn:0:1} == "s" ]]; echo $?
Wenn der Ausgang der über Befehlskette ist 0
, unsere Annahme wird bestätigt.
Auch in diesem Fall, wenn sich der erste Dateiname irgendwie als gültige s/regular expression/replacement/flags
sed-Funktion qualifiziert, werden die anderen Dateinamen als reguläre Dateien interpretiert, damit sed arbeiten kann.
Was bedeutet "erstellt Dateien, die die alten Dateien enthält"? –
Wenn ich eine Datei namens abc habe. Es entfernt die Zeilen aus der Datei abc, erstellt aber eine Datei namens abce. –
Das 'g' ist nicht notwendig, wenn das Muster nur einmal pro Zeile erscheint. –