Saya ingin menggunakan editor Vi untuk menghapus beberapa baris dalam sebuah file. Tolong beri saya ide atau saran.
Tujuan saya adalah seperti ini:
Sebelum:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.
.
29
30
.
.
Setelah;
1
10
20
30
40
.
.
:[range]d
misalnya:3,5d
menghapus baris tiga hingga lima (secara inklusif).gsed -n '1p; 0~10p'
Jawaban:
Jika Anda bermaksud mempertahankan setiap baris ke-10 dan menghapus sisanya:
Penjelasan:
%
seluruh filenorm
jalankan perintah berikut dalam "mode normal"9dd
hapus 9 barisj
bergerak ke bawah satu baris (yaitu simpan)Catatan: ini menghapus baris pertama.
Diadaptasi dari http://www.rayninfo.co.uk/vimtips.html
Atau menggunakan perintah global:
:g/^/+ d9
Diadaptasi dari /programming/1946738/vim-how-to-delete-every-second-row
Atau Anda bisa menggunakan
awk
:sumber
{...}
. senang tahu kamu tidak. Ini adalah perintah awk non-sepele pertama yang saya dapatkan!{ print $0 }
menghapus garis yang tidak berakhir di
0
mulai dari yang kedua.sumber
2,$
merupakan jangkauan, danv/0$/d
yangg!
perintah. Di mana0$
regex dand
perintah ex yang akan dijalankan pada semua baris yang tidak cocok.