Alat terbaik untuk mengedit file di tempat non-interaktif adalah ex
.
ex -sc '%s/\(\.com\).*/\1/ | x' file.txt
Jika Anda telah menggunakan vi
dan jika Anda pernah mengetik perintah yang dimulai dengan titik dua :
Anda telah menggunakan perintah ex. Tentu saja banyak dari perintah yang lebih maju atau "mewah" yang dapat Anda lakukan dengan cara ini adalah ekstensi Vim (mis. :bufdo
) Dan tidak ditentukan dalam spesifikasi POSIX untukex
, tetapi spesifikasi tersebut memungkinkan untuk tingkat daya dan fleksibilitas yang benar-benar menakjubkan di non-visual. pengeditan teks (apakah interaktif atau otomatis).
Perintah di atas memiliki beberapa bagian.
-s
memungkinkan mode hening untuk mempersiapkan ex
penggunaan bets. (Menekan pesan output dkk.)
-c
menentukan perintah untuk mengeksekusi setelah file ( file.txt
, dalam kasus ini) dibuka di buffer.
%
adalah specifier alamat yang setara dengan 1,$
— itu berarti bahwa perintah berikut diterapkan ke semua baris buffer.
s
adalah perintah pengganti yang mungkin sudah Anda kenal. Ini biasa digunakan divi
dan pada dasarnya memiliki fitur yang identik dengan s
perintahsed
, meskipun beberapa fitur regex canggih dapat bervariasi berdasarkan implementasi. Dalam hal ini dari ".com" hingga akhir baris diganti dengan hanya ".com".
Bilah vertikal memisahkan perintah berurutan yang akan dieksekusi. Dalam banyak (sebagian besar)ex
implementasi, Anda juga dapat menggunakan -c
opsi tambahan , seperti:
ex -sc '%s/\(\.com\).*/\1/' -c x file.txt
Namun, ini tidak diperlukan oleh POSIX.
The x
perintah keluar, setelah menulis perubahan ke file. Berbeda dengan wq
yang berarti "menulis dan berhenti", x
hanya menulis ke file jika buffer telah diedit. Jadi, jika file Anda tidak diubah, stempel waktu akan dipertahankan.
.com
hanya alih-alih menghapus semuanya setelah dan termasuk/
karakter pertama ? Bagaimana jika Anda memiliki URL sepertien.wikipedia.org/wiki/Ubuntu
di daftar Anda?