Tambahkan ## ke setiap baris dalam file teks


30

Saya ingin menambahkan hash ke semua baris dalam file teks biasa. Saya baik-baik saja dengan penggunaan terminal dan GUI — saya hanya perlu menyelesaikannya.

Jawaban:


50

Anda dapat menggunakannya seduntuk melakukan itu:

sed -i.bak 's/^/##/' file

Ini menggantikan awal baris ( ^) dengan ##.

Dengan -i.baksakelar, sededit file di tempat, tetapi buat salinan cadangan dengan ekstensi .bak.


1
+1 Ini adalah pertama kalinya saya menemukan metode cadangan ini. Saya selalu tidak inline menggantikan secara langsung: sed 's/^/##/' -i file. Dalam hal ini, ini lebih disukai karena tidak salah. Dalam kasus lain, perintah ini dapat digabungkan dengan diff -u file.bak fileuntuk melihat perbedaan (jika perlu, pipa melalui less). Jika dikonfirmasi berhasil, cadangan dapat dihapus. Kalau tidak bisa dipulihkan dengan sederhana mv file.bak file.
Lekensteyn

1
Anggun. Saya sedang memikirkan sesuatu seperti sed 's/^\(.*\)$/##\1/', tetapi ini jauh lebih baik.
mengatur

Bagus .. Saya sedang berpikir untuk menyarankan Vim untuk melakukan ini ...
Sathish

Ini membantu saya mengonversi file daftar blokir :) Terima kasih 1+
Neil


6

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+.


4

Begini bashcaranya:

while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile

( Dalam bashshell , menjalankan read -rtanpa 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 perlmungkin diharapkan lebih efisien daripada sebuah shell ketika datang ke pemrosesan teks.


3

sed -ibukan POSIX-standar, jadi jika Anda seorang purist Anda ingin menggunakan ed:

printf ",s/^/##/\nw\nq" | ed -s file.txt

3

Berikut perlcara yang lebih mudah daripada yang disajikan di tempat lain:

perl -pi -e 'print "##"' YOURFILEHERE

Ini (ab) menggunakan fakta yang perl -pmencetak baris setelah mengeksekusi perintah yang diberikan -e.


0

Anda dapat menggunakan Vim dalam mode Ex:

ex -sc '%s/^/##/|x' file
  1. % pilih semua garis

  2. s pengganti

  3. x Simpan dan tutup


0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.