Saya ingin menambahkan hash ke semua baris dalam file teks biasa. Saya baik-baik saja dengan penggunaan terminal dan GUI — saya hanya perlu menyelesaikannya.
text-processing
Oxwivi
sumber
sumber
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
.sed 's/^\(.*\)$/##\1/'
, tetapi ini jauh lebih baik.Berikut adalah solusi untuk masalah ini menggunakan perl
sumber
-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%2aSementara kita berada di dalamnya:
Ini menggunakan plugin pengeditan di tempat (relatif baru) untuk GNU awk 4.1.0+.
sumber
Begini
bash
caranya:( Dalam
bash
shell , menjalankanread -r
tanpa argumen lain bekerja sepertiIFS= 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.sumber
sed -i
bukan POSIX-standar, jadi jika Anda seorang purist Anda ingin menggunakaned
:sumber
Berikut
perl
cara yang lebih mudah daripada yang disajikan di tempat lain:Ini (ab) menggunakan fakta yang
perl -p
mencetak baris setelah mengeksekusi perintah yang diberikan-e
.sumber
Anda dapat menggunakan Vim dalam mode Ex:
%
pilih semua gariss
penggantix
Simpan dan tutupsumber
Dapat dilakukan dengan fungsi pemetaan python dan mengarahkan stdin:
Simpan output ke file baru dan gunakan bukan yang asli
sumber