Saya suka menggunakan perintah global vim untuk menyelesaikan tugas-tugas seperti ini. Ini berlaku untuk menambahkan iterasi ke awal baris atau memodifikasi simbol dalam teks. Ini terlihat lebih rumit daripada solusi lain, tetapi merupakan pola yang cukup fleksibel untuk digunakan saat Anda menggunakannya, dan mudah untuk dimodifikasi tanpa banyak pemikiran.
Pertama, pilih rentang Anda (baris mana yang ingin Anda terapkan ini). Saya biasanya menggunakan tanda (misalnya ma
pada baris pertama dan mb
pada baris kedua, tetapi Anda juga dapat menggunakan nomor baris atau pemilihan visual), kemudian masukkan modifikasi dari perintah berikut (saat ini di-tweak untuk use case Anda)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
Dekonstruksi
:let i=1
Ini mengatur variabel i
dengan nilai awal. Biasanya daftar dimulai dengan 1, jadi saya mengatur i ke 1.
|
Bilah memulai perintah baru
'a,'b
Ini mengatur rentang perintah selanjutnya. Saya beralih dari satu tanda a
ke tanda lainnya b
, yang akan ditetapkan pada baris pertama dan baris terakhir dari daftar Anda.
g/^/
Ini adalah perintah global. Itu mencari file (atau rentang) untuk ekspresi reguler yang diberikan, dan akan mengeksekusi sisa baris perintah pada setiap baris yang cocok. Saya mencocokkan setiap baris dengan mencari "awal baris". Jika Anda memiliki teks suka
Item some txt
other text
Item second item
whatever
Item third
dan hanya ingin meletakkan label ini di depan Item
dan mengabaikan baris lain, lakukan g/Item/
atau g/^Item/
sebaliknya (dengan asumsi teks Item literal)
s/^/\=i.". "/
Ini mengeksekusi ekspresi reguler untuk mengganti awal baris dengan nilai i
digabungkan dengan a .
. Secara umum Anda dapat melakukan ini untuk apa saja (ganti label Item
dengan nomor, misalnya).
|let i=i+1
Meskipun bilah memulai perintah baru, bilah ini mengatur perintah kedua untuk dijalankan di dalam perintah global, alih-alih setelah global selesai. Hasilnya adalah kita bertambah i
sebelum baris berikutnya diproses oleh g. Di sini ada tempat lain untuk fleksibilitas. Modifikasi i dapat berupa apa saja (selisih 2, sebut fungsi yang menghasilkan elemen berikutnya dari deret Fibonacci, apa pun).
awk
mungkin alat untuk pekerjaan ini. Tapi saya di Windows (menghela napas).