Antworten:
Sie können sed
dazu Folgendes verwenden:
sed -i.bak 's/^/##/' file
Dies ersetzt den Zeilenanfang ( ^
) durch ##
.
Bearbeitet mit dem -i.bak
Schalter sed
die Datei direkt, erstellt jedoch eine Sicherungskopie mit der Erweiterung .bak
.
sed 's/^\(.*\)$/##\1/'
, aber das ist viel schöner.
Hier ist eine Lösung für dieses Problem mit Perl
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-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%2a
Während wir dabei sind:
gawk -i inplace '{print "##"$0}' infile
Dies verwendet das (vergleichsweise neue) Inplace-Bearbeitungs-Plugin für GNU awk 4.1.0+.
Hier ist ein bash
Weg:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( In der bash
Shellread -r
funktioniert die Ausführung ohne andere Argumente wie folgt IFS= 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.
Sie können Vim im Ex-Modus verwenden:
ex -sc '%s/^/##/|x' file
%
Wählen Sie alle Zeilen aus
s
Ersatz
x
speichern und schließen
Kann mit der Mapping-Funktion von Python und der Umleitung von stdin durchgeführt werden:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
Speichern Sie die Ausgabe in einer neuen Datei und verwenden Sie sie anstelle der Originaldatei
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
.