Ich möchte allen Zeilen in einer normalen Textdatei Hashes hinzufügen. Ich kann sowohl das Terminal als auch die grafische Benutzeroberfläche problemlos verwenden - ich muss es nur erledigen.
text-processing
Oxwivi
quelle
quelle
sed 's/^/##/' -i file
. In diesem Fall wäre dies vorzuziehen, da es nicht schief gehen kann. In anderen Fällen kann dieser Befehl mit kombiniert werdendiff -u file.bak file
, um die Unterschiede zu sehen (ggf. weiterleitenless
). Wenn bestätigt wird, dass es funktioniert, kann das Backup entfernt werden. Sonst könnte es mit einem einfachen restauriert werdenmv file.bak file
.sed 's/^\(.*\)$/##\1/'
, aber das ist viel schöner.Hier ist eine Lösung für dieses Problem mit Perl
quelle
-p
Schalter ist auch nützlich:perl -pe 's/^/##/' infile > outfile
. (Es gibt auch den-i[extension]
Schalter zum Ersetzen der Zieldatei an Ort und Stelle.) Perldoc.perl.org/perlrun.html#%2a-p%2aWährend wir dabei sind:
Dies verwendet das (vergleichsweise neue) Inplace-Bearbeitungs-Plugin für GNU awk 4.1.0+.
quelle
Hier ist ein
bash
Weg:( In der
bash
Shellread -r
funktioniert die Ausführung ohne andere Argumente wie folgtIFS= read -r REPLY
.)Dies ist stilistisch inspiriert von der Perl-Lösung von beav_35, die , wie ich zugeben muss, bei großen Dateien viel schneller ausgeführt wird, da
perl
zu erwarten ist, dass sie bei der Textverarbeitung effizienter ist als eine Shell.quelle
sed -i
ist kein POSIX-Standard. Wenn Sie also Purist sind, sollten Sie Folgendes verwendened
:quelle
Hier ist ein einfacher
perl
Weg als anderswo vorgestellt:Dies (ab) verwendet die Tatsache, dass
perl -p
die Zeile nach Ausführung des in angegebenen Befehls gedruckt wird-e
.quelle
Sie können Vim im Ex-Modus verwenden:
%
Wählen Sie alle Zeilen auss
Ersatzx
speichern und schließenquelle
Kann mit der Mapping-Funktion von Python und der Umleitung von stdin durchgeführt werden:
Speichern Sie die Ausgabe in einer neuen Datei und verwenden Sie sie anstelle der Originaldatei
quelle