Pada kesempatan tertentu kita perlu menghapus baris tertentu dari satu atau beberapa file, misalnya, telah terjadi pada saya bahwa saya memiliki seluruh daftar file dan saya perlu menghapus baris # 27 dari semua ini (baris # 27 adalah dari ACL , norma, aturan, konfigurasi), apakah saya dapat mengedit file demi file atau saya hanya dapat mencapai apa yang saya butuhkan menggunakan perintah sed dan skrip bash (opsional).
Tapi, mari kita coba satu file yang agak sederhana.
Kami memiliki file tersebut distro-deb.txt yang berisi ini:
debian
kubuntu
archlinux
solus
permen
Artinya, file tersebut distro-deb.txt di mana kita akan meletakkan distro berbasis Debian, tetapi di sana kita melihat bahwa di baris # 3 ada "archlinux", distro yang jelas tidak ada hubungannya dengan Debian, jadi kita harus menghilangkan baris itu. Untuk menghilangkan baris # 3 dari file itu kami akan meletakkan yang berikut ini:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Menjelaskan baris ini agak mudah, dengan haus "3d" kami menunjukkan bahwa kami akan menghapus baris # 3, dengan distro-deb.txt Kami menunjukkan file apa yang akan dikerjakan, yaitu, hapus baris # 3 dari file ini, hingga di sini jika kami menekan Enter maka akan menunjukkan kepada kami apa yang kami inginkan tetapi di terminal, jadi dengan > distros-deb-ok.txt kami menunjukkan bahwa alih-alih menampilkan hasil di terminal, melainkan meletakkannya di file dengan nama ini.
Sederhana apa?
Selain itu, kita dapat menghindari penggunaan > distros-deb-ok.txt menggunakan parameter yang tepat dari sed, parameternya -i
Artinya, jika kita ingin menghapus baris dari file dan menyimpannya dengan nama yang sama (dan bukan di file lain), cukup tambahkan parameter -i :
sed -i "3d" distros-deb.txt
Ini akan menghapus baris # 3 dari distros-deb.txt dan menyimpannya.
Bagaimana jika saya menginginkan serangkaian baris, yaitu menghapus baris # 3 tetapi juga # 4 dan # 5? Untuk mencapai ini kami menempatkan rentang dari 3 hingga 5, yaitu:
sed -i "3,5d" distros-deb.txt
Dan itu hanya akan menunjukkan debian dan kubuntu 😀
Jadi bagaimana jika saya ingin menghapus dari baris 2 ke baris terakhir, ketika saya tidak tahu total barisnya?
Cukup gunakan simbol dolar - »$
sed -i "2,$d" distros-deb.txt
Jika Anda ingin menghilangkan dari baris pertama ke # 4 maka kami cukup memasukkan nilai 1 di awal:
sed -i "1,4d" distros-deb.txt
Ini telah menjadi segalanya, tip yang sangat berguna ketika Anda ingin membuat skrip bash untuk mengotomatiskan tugas dan Anda perlu memodifikasi dan menghilangkan baris file konfigurasi, untuk memodifikasi dapat kita gunakan sed o perl, sekaligus untuk menghilangkan kita sudah tahu bagaimana melakukannya dengan sed 😉
salam
Kontribusi yang sangat bagus 😉
Terima kasih
Ngomong-ngomong, kami menerima emailmu sekarang, aku akan menjawabmu 😀
salam
Sebagai pendeta tinggi terminal, server, dan koneksi ssh, saya datang kepada Anda, oh hebat KZKG ^ Gaara, dan saya bertanya kepada Anda: di mana saya bisa mendapatkan tutorial pada tingkat ketidaktahuan saya yang memungkinkan saya untuk menggunakan koneksi ssh antara dua mesin jarak jauh di jaringan yang berbeda untuk dibagikan file teks, pdf, gambar dan suara (mp3)….
🙂
Serius, bisakah Anda membimbing saya dalam hal ini, saya memiliki dua mesin, satu di kantor dan satu di rumah dan saya memerlukan koneksi ssh di antara mereka (karena seperti yang saya pahami, ssh memungkinkan konten untuk dibagikan antar mesin, apakah saya salah?).
Dan jika saya salah, aplikasi apa yang Anda rekomendasikan?
Dan di mana saya bisa menemukan tutorial dasar dalam hal ini?
scp
scp pengguna @ alamat_mesin: jalur pengguna @ alamat_mesin: jalur.
Sintaks yang sama dengan cp, source -> destination.
Anda muncul, Anda tersesat.
Tip bagus!
Tip menarik… xD
Apakah Anda kebetulan tahu salah satu yang membuat teks tebal menonjol?
Maksud saya, saya memiliki file txt yang merupakan kamus, memiliki lebih dari 10000 baris dan saya ingin menyorot teks tertentu sebelum titik suspensi ":" dan melakukannya satu per satu terlalu banyak.
Halo,
File txt adalah teks biasa, sesuai dengan namanya ... polos, tanpa format atau yang serupa, saya minta maaf tapi saya rasa apa yang Anda minta tidak bisa dilakukan, bukan? 🙁
salam
sebenarnya bisa, tapi Anda harus tahu format tujuan.
misalnya:
echo $ (echo "Robert: Halo. Ubah di sini" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
ini masalah mengatasi.
cara lain untuk menghapus yang dapat digunakan adalah sed '/' $ 1 '/ d' tetapi Anda harus yakin kembali.
lalu selesaikan menyimpannya di * .odt
Apakah tidak ada cara yang lebih mudah untuk melakukannya dengan LibreOffice?
Bisakah Anda menghapus sebagian dari baris dan meninggalkan sisanya?
Katakanlah saya ingin menghapus semua yang ada di depan sebuah kata di baris tertentu.
Atau hapus semua yang mengikuti kata itu.
Ya, ini masalah menarik regex (jika perlu man sed -r, –regexp-extended)
Mulai dari apa yang saya temukan
echo «Robert: Halo. Ubah di sini »| sed 's / Change //'
dengan pola yang jelas dan dengan. (satu karakter) dan * (lebih dari satu)
Sesudah:
echo «Robert: Halo. Ubah di sini »| sed 's / Change. * //'
Sebelum:
echo «Robert: Halo. Ubah di sini »| sed 's /. * Ubah //'
Jika penting kata itu muncul
echo «Robert: Halo. Ubah di sini »| sed 's / Change. * / Change /'
atau lebih rumit
di baris berisi Robert apa yang terjadi setelah Perubahan
echo -e «Fritz: Halo. Ubah di sini \ nRobert: Halo. Ubah di sini »| sed '/Robert/s/Cambio.*//'
atau seperti di awal, keluarkan baris kedua dan proses sisanya
echo -e «Fritz: Halo. Ubah di sini \ nRobert: Halo. Ubah di sini \ nLainnya »| sed -e 2d -e 's / Change. * //'
echo -e «Fritz: Halo. Ubah di sini \ nRobert: Halo. Ubah di sini \ nLainnya »| sed '2d; s / Change. * //'
Terima kasih, ini sangat berguna bagi saya.
Artikel bagus, yang saya suka, betapa hebatnya SysAdmin!
Apa jadinya hidup kita tanpa sed, awek, perl, grep, ekor, kepala, "Emacs" dan banyak alat penting lainnya !?
Terima kasih, itu sangat membantu.
Halo, dan bagaimana Anda bisa menghapus baris 1,4 dan 10 dari file dengan perintah yang sama?