Cara Hapus Talian dari Tengah Fail Menggunakan Terminal Linux
Apabila anda mengurus pelayan anda sendiri, salah satu daripada perkara yang anda perlu lakukan secara berkala ialah mengeluarkan bahan dari tengah-tengah fail. Mungkin ia adalah fail log, atau anda perlu menambah satu jadual dari tengah-tengah fail sandaran MySQL anda, seperti yang saya lakukan.
Untuk mengetahui nombor baris, perintah grep -n mudah melakukan tugas (hujah -n mengeluarkan nombor baris). Ini memudahkan untuk mengetahui apa yang saya perlukan untuk mengekstrak.
grep -n wp_posts howtogeekdb010114.bak | lebih lagi
Hasil dalam sesuatu seperti ini, yang menunjukkan nombor baris di sebelah kiri output. Piping segala sesuatu ke "lebih" memastikan bahawa anda dapat melihat baris pertama tanpa menatal oleh. Sekarang anda telah mendapat nombor garisan untuk bermula dengan, dan mungkin yang berakhir dengan.
4160: - Struktur jadual untuk 'wp_posts' jadual 4163: DROP TABLE JIKA 'wp_posts' EXISTS '; 4166: CREATE TABLE 'wp_posts' (4203: - Dumping data untuk 'wp_posts' jadual 4206: WP_posts '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 boleh, tentu saja, hanya paip output dari grep ke fail lain, seperti ini:
grep keyword filename.txt> outputfile
Dalam kes saya, itu tidak mahu berfungsi, kerana saya tidak boleh mengimport sandaran yang terhasil untuk sebab tertentu. Oleh itu, saya mendapati cara yang berbeza untuk mengekstrak garisan menggunakan sed, dan kaedah ini berfungsi.
sed -n '4160,4209p' howtogeekdb0101140201.bak> outputfile
Pada dasarnya sintaks adalah seperti ini, pastikan untuk menggunakan hujah -n, dan masukkan "p" selepas nombor baris kedua.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' nama fail> outputfilename
Beberapa cara lain yang anda boleh tarik keluar garis tertentu di tengah-tengah fail? Anda boleh menggunakan arahan "kepala" dengan argumen nombor + untuk membaca melalui baris x pertama fail, dan kemudian gunakan ekor untuk mengekstrak baris tersebut. Bukan pilihan terbaik, banyak overhead. Pilihan yang lebih mudah? Anda boleh menggunakan arahan berpecah untuk menghidupkan fail ke dalam berbilang fail tepat pada nombor garisan yang anda inginkan, dan kemudian ekstrak garisan menggunakan kepala atau ekor.
Atau anda hanya boleh menggunakan sed.