GNU/Linux >> Belajar Linux >  >> Linux

Memisahkan file log yang di-gzip tanpa menyimpan file yang tidak di-zip pada disk

Skrip seperti berikut mungkin cukup.

#!/usr/bin/perl
use PerlIO::gzip;

$filename = 'out';
$limit = 500000;

$fileno = 1;
$line = 0;

while (<>) {
    if (!$fh || $line >= $limit) { 
        open $fh, '>:gzip', "$filename_$fileno"; 
        $fileno++;
        $line = 0; 
    }
    print $fh $_; $line++;
}

Anda dapat menggunakan split --filter opsi seperti yang dijelaskan dalam manual mis.

zcat biglogfile.gz | split -l500000 --filter='gzip > $FILE.gz'

Sunting:tidak sadar saat --filter opsi diperkenalkan tetapi menurut komentar, itu tidak berfungsi di core utils 8.4 .


Linux
  1. Cara menggunakan dd di Linux tanpa merusak disk Anda

  2. Cara Mengetahui Apakah Disk Adalah SSD Atau HDD Di Linux

  3. Kelebihan Sistem File Tanpa Partisi?

  1. Bagaimana Cara Mendaftar File Termuda N (tanpa Parsing Ls!)?

  2. Riwayat Arsip Tanpa Keluar dari Shell?

  3. Cara Scriptable Untuk Mengidentifikasi Partisi ke-N Disk?

  1. Linux mremap tanpa membebaskan pemetaan lama?

  2. Bagaimana cara mendapatkan jumlah disk fisik di Linux?

  3. Seberapa acak data pada disk RAID5?