Pertanyaan Bagaimana cara membuka file besar di terminal (menggunakan vim menyebabkan terminal macet)? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya menggunakan Ubuntu 14.04. Saya memiliki file log besar:

-rw-r--r-- 1 rails root 1792390124 Jan 10 14:54 /var/log/unicorn/unicorn.log

Meskipun demikian, saya perlu membukanya dan menemukan beberapa hal di dalamnya. Saya mencoba vim, tetapi berlari

vim /var/log/unicorn/unicorn.log

hanya membuka layar kosong dan bahkan ketika saya gunakan Ctrl+C, tidak ada yang terjadi. Terminal digantung. Tanpa memutakhirkan salah satu perangkat keras pada mesin saya (tapi saya terbuka untuk menginstal perangkat lunak), bagaimana saya bisa membuka file dan melihat-lihat (saya tidak perlu mengeditnya, saya hanya perlu membaca beberapa baris darinya).


9
2018-01-10 20:03


asal


Menemukan hal-hal dalam file log paling baik dilakukan dengan menggunakan grep. -A dan -B mungkin membantu di sini. - RoVo
Bekerja dengan file-file besar di linux (pada Stack Overflow) dapat membantu juga. - Eliah Kagan


Jawaban:


Ketika berhadapan dengan file besar, lebih baik untuk meminimalkan jumlah informasi yang akan Anda hadapi, dan ada alat untuk itu. Salah satu alat yang telah disebutkan adalah grep untuk mencari jalur tertentu yang Anda butuhkan. Dua alat lain yang saya sarankan untuk digunakan adalah tail dan head yang dapat menampilkan sejumlah baris atau byte tertentu dari atas file ( head ) atau dari akhir ( tail ). Ini berguna jika Anda hanya perlu membaca bagian-bagian tertentu dari file, tetapi tidak ada di antaranya.

Cara alternatif adalah dengan menggunakan split perintah. Ini dapat memecah file berdasarkan jumlah byte atau garis. Sebagai contoh,

$ mkdir SPLIT

$ cd SPLIT/                                                                                                       

$ split -l 5  /etc/passwd

$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj

Sekarang, saya /etc/password dipecah menjadi file yang lebih kecil, masing-masing 5 baris, yang dapat Anda buka dengan vim atau editor teks lainnya


4
2018-01-10 20:33





Gunakan perintah less. less menggunakan cara yang lebih efisien untuk membaca file ke dalam memori. Ada 2 perintah yang setara: more dan most (yang terakhir yang perlu Anda instal). Mereka menempatkan satu halaman ke dalam memori.

Tapi pilihan TERBAIK Anda untuk mencari akan digunakan grep. Contoh:

grep {searchstring} {file}

Dan lihatlah logrotate sehingga Anda meregangkan log tersebut melalui beberapa file.

Dan split dapat membagi file Anda saat ini menjadi bagian yang sama sehingga Anda memiliki kehidupan yang lebih mudah dengan melihat log itu.


6
2018-01-10 20:16



Seperti less (tapi tidak seperti itu more), most mendukung scroll ke belakang dan ke depan. Itu hanya menggunakan tombol yang berbeda untuk menggulir kembali satu halaman: less menggunakan B (untuk kembali), sementara most menggunakan U (untuk naik). Di sebagian besar terminal, tombol Page Up baik dalam keduanya. (Di most, B bergulir ke arah bawah; dan masuk less, Gulungan U naik... tapi hanya setengah layar.) Untungnya, keduanya less dan most menerima / untuk mencari ke depan, ? untuk mencari mundur, dan H untuk membantu, sehingga pengguna yang terbiasa dengan satu biasanya dapat menggunakan yang lain dengan mudah. - Eliah Kagan


Itu tergantung pada apa tujuan Anda.

Jika Anda ingin menggulir seluruh logfile, Anda bisa menggunakan less atau more perintah untuk mendapatkan tampilan halaman demi halaman dari file yang ada di tangan.

Jika tidak, jika Anda tahu di mana di file yang Anda cari, Anda dapat menggunakan head atau tail perintah untuk mengambil bagian / kutipan dari file. Lihat man head dan man tail untuk informasi lebih lanjut tentang cara mencari bagian yang tepat.

Jika Anda mencari string / entri tertentu, Anda dapat menggunakan grep untuk mencari file untuk string Anda. Anda bisa menggunakan cat file | grep something atau grep something file tergantung pada apa yang ingin Anda lakukan.

Atau, jika Anda ingin melakukan beberapa hal yang lebih maju, Anda bisa melihat menggunakan sed atau awk untuk operasi yang lebih maju, jika perlu.


5
2018-01-10 20:18



Saya mencari tempat di dalam file tetapi alasannya (saya pikir) grep saja tidak cukup baik karena saya mencari urutan string (dimulai dengan "Http") yang terjadi sebelum urutan string lain (dimulai dengan " 120 "). Saya tidak jelas bagaimana melakukannya dengan grep saja. - Dave
@Bertahankan dengan baik, jika Anda perlu menemukan string tertentu dalam file, posting pertanyaan lain, jelaskan apa pola itu, dan saya yakin orang dapat memberikan solusi untuk itu. Pertanyaan ini dalam konteks yang berbeda, menurut saya, pos baru akan lebih baik - Sergiy Kolodyazhnyy
Hai Anda adalah orang yang bertanya tentang mengapa saya ingin membuka file teks besar. Saya senang menyimpan pertanyaan ini dalam konteks aslinya. - Dave


Jika Anda tahu persis baris apa yang Anda inginkan, gunakan grep. Tetapi jika Anda memancing untuk sesuatu yang tidak Anda yakini, gunakan less lebih baik, karena ini akan menunjukkan konteks (yang sangat berguna untuk file log).

Ketik / perintah dari dalam less untuk membuka bidang pencarian. Ketik yang Anda inginkan lalu tekan enter. Kemudian untuk terus mencari kata yang sama, ketik n untuk maju dan N untuk mundur. Untuk melompat ke ujung jenis file G, kemudian N atau ?.


0
2018-01-11 00:53