Saya ingin mengedit file yang diteruskan dalam input pipa menggunakan vim secara non-interaktif atau mengedit file di tempat (mirip dengan sed
).
Beberapa contoh menggunakan sed
:
$ sed -i'.bak' s/foo/test/g file # Edit file in-place.
$ cat file | sed s/foo/test/g # Parse file in pipeline.
Namun saya dapat membaca di sini , bahwa:
sed
adalah S tream ED itor, bukan file editor. Namun demikian, orang di mana-mana cenderung menyalahgunakannya karena mencoba mengedit file. Itu tidak mengedit file.
Kedua beberapa opsi seperti in-place editing ( -i
) bersifat portable.
Bagaimana fungsi yang sama dapat dicapai di vim?
file
dari commandline kedua Anda.Jawaban:
Untuk mengedit file yang tidak menggunakan interaksi
ex
(vi
adalah mode visual untukex
), Anda dapat menggunakan+{command}
atau-c {command}
parameter yang memungkinkan Anda untuk menjalankan perintah vi setelah file pertama dibaca.Ini
ex
adalah editor baris perintah standar (mirip denganed
).Ada juga
vipe
(editor pipa perintah Vim) harus digunakan yang merupakan bagian darimoreutils
paket dan itu akan memungkinkan Anda untuk menjalankan editor Anda di tengah-tengah pipa unix dan mengedit data yang sedang disalurkan antara program.Contohnya
Input dan output standar sederhana menggunakan pipa dapat dicapai dengan sintaksis shell ini:
Berikut ini adalah contoh sederhana cara mencetak file setelah substitusi:
Lebih banyak contoh untuk mengedit file di tempat:
Anda juga dapat menggunakan
-s {scriptin}
sehingga perintah diambil dari file, misalnya:atau menggunakan pengalihan I / O:
Untuk mengedit satu file dan menyimpan perubahan ke yang lain, periksa contoh berikut:
Contoh yang lebih praktis.
Contoh nyata dari spesifikasi RPM :
Mengekstrak tag html :
Menghapus tag XML :
Menghapus tag gaya dari header dan mencetak output yang diuraikan:
Parsing html dengan beberapa aturan kompleks:
Bahkan lebih banyak contoh:
Lihat juga:
sumber
vim '+:0,$s/foo/test/g' '+:wq! file2' file1
saja.bufdo
,. Meskipun Vim adalah apa yang diinstal secara virtual di mana-mana, perlu diketahui bahwa Anda dapat mengedit file script hanya menggunakan fitur-fitur yang sesuai dengan POSIXex
.ex
dan benar-benar mempelajarinya. Terima kasih. Beberapa bacaan lebih lanjut tentang subjek ini (pengungkapan penuh: Saya menulis ini;) adalah: membalikkan setiap empat baris denganex
, dan menggunakan-c
opsi . Anda dapat menambahkannya ke daftar tautan di bagian bawah, jika diinginkan. :)