Saya ingin menghapus baris pertama dari beberapa file teks dan menggantinya dengan baris lain. Apakah ada cara untuk melakukan ini menggunakan terminal?
Saya tahu cara menggunakan vim, apakah ada cara untuk mengotomatiskannya? Saya ingin menghindari melakukannya secara manual (seperti dalam mengedit setiap file satu per satu).
Jika mungkin saya ingin menghindari menginstal perpustakaan baru (terutama untuk sesuatu seperti itu yang saya anggap sangat sederhana - tapi saya bisa saja salah).
Terima kasih sebelumnya!
sumber
sed
sebenarnya apa yang saya cari!Nah, menggunakan
vim
sendiri:Apa yang dilakukan:
setline (n, text)
, Baik, adalah fungsi yang set garisn
untuktext
.call
diperlukan untuk memanggil fungsi.bufdo
digunakan untuk mengulangi perintah melintasi buffer (tanpa rentang, itu bekerja pada semua buffer).wq
menyimpan dan keluar dari buffer. Kita perlu melakukan ini sebelum pindah ke buffer berikutnya, jadi perintah ini dirantai kecall
perintah menggunakan|
.-c cmd
menjalankancmd
adalah perintah-mode perintah setelah memuat buffer pertama.Nes
Mengaktifkan no-kompatibel, silent, ex-mode, yang lebih baik untuk pemrosesan non-interaktif.Manfaat:
setline
konten teks bisa apa saja - sebuah&
dised
teks pengganti dapat memiliki efek yang tidak diinginkan.sumber
sed
tampaknya jauh lebih mudah digunakan, tetapi benar-benar hebat yangvim
dapat melakukan hal yang sama! Terima kasih banyak atas jawaban Anda!bufdo
). Anggap Anda memiliki file yang sudah terbuka dan ... Dan untuk menunjukkan alternatif1s/foo/bar/
.Beberapa opsi lain:
awk
(membutuhkan versi GNU yang relatif baruawk
)Perl / shell
Shell / coreutils
sumber
Script ini akan melakukan seperti yang Anda minta, menempatkan file yang diubah di direktori baru tanpa benar-benar mengubah aslinya.
sumber
Menggunakan
gawk
Contoh
sumber
jEdit: Saya menggunakannya untuk pencarian dan penggantian massal. Ini kuat dengan kemampuan untuk menggunakan RegEx - Regular Expressions. Anda dapat beroperasi pada file dalam direktori, tentukan ekstensi file, misalnya, ".html" dan sebagainya. Dan, Anda dapat melihat lokasi perubahan kandidat dalam konteks, dalam GUI. jEdit bagus.
jEdit tersedia melalui pusat perangkat lunak Ubuntu.
sumber
Perintah ekor dan kucing akan melakukan ini dengan mudah:
Bungkus mereka dalam loop yang sesuai dan mungkin menggunakan file temporer yang tepat dan benar bukan nama file temporer yang dikodekan. Saya percaya bash dan shell lain memiliki sintaks untuk membuat file sementara.
Opsi -n dari tail memiliki dua interpretasi tergantung pada apakah argumen memiliki tanda tambah. Jika memiliki tanda tambah maka itu berarti menunjukkan ekor file mulai dari nomor baris yang diberikan. Kalau tidak, angkanya adalah jumlah garis, termasuk garis terakhir, yang seharusnya dihasilkan oleh ekor.
sumber