If-Koubou

Cara Menghapus Garis dari Tengah File Menggunakan Terminal Linux

Cara Menghapus Garis dari Tengah File Menggunakan Terminal Linux (Bagaimana caranya)

Ketika Anda mengelola server Anda sendiri, salah satu hal yang pada akhirnya perlu Anda lakukan secara semi-reguler adalah mengekstrak barang dari tengah-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 sederhana melakukan pekerjaan (argumen -n menghasilkan angka garis). Ini memudahkan untuk mencari tahu apa yang perlu saya ekstrak.

grep -n wp_posts howtogeekdb010114.bak | lebih

Hasil dalam sesuatu seperti ini, yang menunjukkan nomor baris di sebelah kiri output. Memoles semuanya menjadi "lebih" akan memastikan bahwa Anda dapat melihat baris pertama tanpa menggulir. Sekarang Anda sudah mendapatkan nomor baris untuk memulai, dan mungkin yang harus diakhiri.

4160: - Struktur tabel untuk tabel 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: CREATE TABLE 'wp_posts' (4203: - Dumping data untuk tabel 'wp_posts' 4206: TABEL LOCK 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /; 4208: INSERT INTO 'wp_posts 'VALUES (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11

Anda dapat, tentu saja, hanya menyalurkan output dari grep ke file lain, seperti ini:

grep keyword filename.txt> outputfile

Dalam kasus saya, itu tidak mau berfungsi, karena saya tidak bisa mengimpor cadangan yang dihasilkan untuk beberapa alasan. Jadi, saya menemukan cara yang berbeda untuk mengekstrak garis menggunakan sed, dan metode ini berhasil.

sed-n '4160,4209p' howtogeekdb0101140201.bak> outputfile

Pada dasarnya sintaks seperti ini, pastikan untuk menggunakan argumen -n, dan sertakan "p" setelah nomor baris kedua.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename> outputfilename

Beberapa cara lain Anda dapat menarik garis-garis tertentu di tengah-tengah file? Anda bisa menggunakan perintah "head" dengan argumen nomor + untuk hanya membaca x baris pertama file, dan kemudian menggunakan ekor untuk mengekstrak garis-garis tersebut. Bukan pilihan terbaik, banyak overhead. Pilihan yang lebih sederhana? Anda dapat menggunakan perintah split untuk mengubah file menjadi beberapa file tepat pada nomor baris yang Anda inginkan, dan kemudian mengekstrak garis menggunakan kepala atau ekor.

Atau Anda bisa menggunakan sed.