GNU/Linux >> Belajar Linux >  >> Linux

Apakah Mungkin Di Bash, Untuk Mulai Membaca File Dari Offset Hitungan Byte Sewenang-wenang?

Saya ingin mencari tanggal di suatu tempat di log 8 GB (teks).

Bisakah saya mem-bypass pembacaan sekuensial penuh, dan pertama-tama melakukan pemisahan biner dari file (ukuran), atau entah bagaimana menavigasi inodes sistem file (yang saya tahu sangat sedikit tentang), untuk mulai membaca dari setiap titik pemisahan, sampai saya menemukan offset yang cocok dari mana saya harus memulai pencarian teks saya untuk baris yang mencantumkan tanggal?

tail pembacaan baris terakhir tidak menggunakan pembacaan sekuensial normal, jadi saya ingin tahu apakah fasilitas ini entah bagaimana tersedia di bash, atau apakah saya perlu menggunakan Python atau C/C++… tetapi saya secara khusus tertarik pada bash pilihan..

Jawaban yang Diterima:

for (( block = 0; block < 16; block += 1 ))
do 
    echo $block; 
    dd if=INPUTFILE skip=$((block*512))MB bs=64 count=1 status=noxfer 2> /dev/null | 
        head -n 1
done

yang .. tidak membuat file temp-split, melompati blok * 512MB data pada setiap proses, membaca 64 byte dari posisi itu dan membatasi output ke baris pertama 64 byte tersebut.

Anda mungkin ingin menyesuaikan 64 dengan apa pun yang Anda pikir Anda butuhkan.


Linux
  1. File Setara ".bashrc" Dibaca Oleh Semua Shell?

  2. Apakah Mungkin Menemukan Vim/tmux Yang Filenya Terbuka?

  3. Bagaimana Cara Membaca String Sebagai Angka Hex Di Bash?

  1. Membaca Pola Grep Dari File?

  2. Membaca dari file dalam perakitan

  3. Mendapatkan hitungan deskriptor file yang digunakan saat ini dari kode C

  1. Hapus baris tertentu dari file riwayat Bash

  2. Skrip Bash untuk menghapus file terlama dari folder

  3. Dapatkan lokasi kota dari alamat IP di dalam file