Jawaban:
Anda dapat menggunakannya sed
untuk melakukan itu:
sed -i.bak 's/^/##/' file
Ini menggantikan awal baris ( ^
) dengan ##
.
Dengan -i.bak
sakelar, sed
edit file di tempat, tetapi buat salinan cadangan dengan ekstensi .bak
.
sed 's/^\(.*\)$/##\1/'
, tetapi ini jauh lebih baik.
Berikut adalah solusi untuk masalah ini menggunakan perl
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-p
switch juga berguna: perl -pe 's/^/##/' infile > outfile
. (Ada juga -i[extension]
saklar untuk mengganti file target di tempat.) Perldoc.perl.org/perlrun.html#%2a-p%2a
Sementara kita berada di dalamnya:
gawk -i inplace '{print "##"$0}' infile
Ini menggunakan plugin pengeditan di tempat (relatif baru) untuk GNU awk 4.1.0+.
Begini bash
caranya:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( Dalam bash
shell , menjalankan read -r
tanpa argumen lain bekerja seperti IFS= read -r REPLY
.)
Ini secara gaya terinspirasi oleh solusi perl beav_35 , yang saya akui mungkin berjalan jauh lebih cepat untuk file besar, karena perl
mungkin diharapkan lebih efisien daripada sebuah shell ketika datang ke pemrosesan teks.
Anda dapat menggunakan Vim dalam mode Ex:
ex -sc '%s/^/##/|x' file
%
pilih semua garis
s
pengganti
x
Simpan dan tutup
Dapat dilakukan dengan fungsi pemetaan python dan mengarahkan stdin:
$ 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
Simpan output ke file baru dan gunakan bukan yang asli
sed 's/^/##/' -i file
. Dalam hal ini, ini lebih disukai karena tidak salah. Dalam kasus lain, perintah ini dapat digabungkan dengandiff -u file.bak file
untuk melihat perbedaan (jika perlu, pipa melaluiless
). Jika dikonfirmasi berhasil, cadangan dapat dihapus. Kalau tidak bisa dipulihkan dengan sederhanamv file.bak file
.