Cara Menghapus Baris dari Tengah File Menggunakan Terminal Linux
Ketika Anda mengelola server Anda sendiri, salah satu hal yang akhirnya perlu Anda lakukan secara semi-reguler adalah mengekstrak hal-hal dari tengah file. Mungkin itu file log, atau Anda perlu tambahan satu tabel dari tengah file cadangan MySQL Anda, seperti yang saya lakukan.
Untuk mengetahui nomor baris, perintah grep -n yang sederhana melakukan pekerjaan (argumen -n menampilkan nomor baris). Ini membuatnya mudah untuk mengetahui apa yang perlu saya ekstrak.
grep -n wp_posts howtogeekdb010114.bak | lebih
Menghasilkan sesuatu seperti ini, yang menunjukkan nomor baris di sebelah kiri output. Memipipkan semuanya ke "lebih" memastikan bahwa Anda dapat melihat baris pertama tanpa menggulir oleh. Sekarang Anda memiliki nomor baris untuk memulai, dan mungkin nomor satu untuk diakhiri.
4160: - Struktur tabel untuk tabel 'wp_posts' 4163: DROP TABLE JIKA ADA 'wp_posts'; 4166: CREATE TABLE 'wp_posts' (4203: - Dumping data untuk tabel 'wp_posts' 4206: LOCK TABLES 'wp_posts' MENULIS; 4207: / *! 40000 ALTER TABLE 'wp_posts KUNCI KUNCI * /; 4208: MASUKKAN KEPADA KEMASAN * /; 'NILAI (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Anda bisa, tentu saja, hanya menyalurkan output dari grep ke file lain, seperti ini:
grep kata kunci filename.txt> outputfile
Dalam kasus saya, itu tidak mau berfungsi, karena saya tidak bisa mengimpor cadangan yang dihasilkan karena alasan tertentu. Jadi, saya menemukan cara berbeda untuk mengekstrak garis menggunakan sed, dan metode ini berhasil.
sed -n '4160,4209p' howtogeekdb0101140201.bak> outputfile
Pada dasarnya sintaksnya seperti ini, pastikan untuk menggunakan argumen -n, dan sertakan "p" setelah nomor baris kedua.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' nama file> outputfilename
Beberapa cara lain Anda dapat menarik garis tertentu di tengah file? Anda bisa menggunakan perintah "head" dengan argumen + number untuk hanya membaca baris x pertama file, dan kemudian menggunakan tail untuk mengekstrak baris tersebut. Bukan pilihan terbaik, banyak overhead. Opsi yang lebih sederhana? Anda dapat menggunakan perintah split untuk mengubah file menjadi beberapa file tepat di nomor baris yang Anda inginkan, dan kemudian mengekstrak garis menggunakan kepala atau ekor.
Atau Anda bisa menggunakan sed.