Sekolah lama - Anda bisa menggunakan dd
:
dd if=A_FILE bs=1 skip=3
File inputnya adalah A_FILE
, ukuran blok adalah 1 karakter (byte), lewati 3 'blok' pertama (byte). (Dengan beberapa varian dd
seperti GNU dd
, Anda dapat menggunakan di bs=1c
sini - dan alternatif suka bs=1k
membaca dalam blok 1 kilobyte dalam keadaan lain. dd
Tampaknya pada AIX tidak mendukung ini, tampaknya; varian BSD (macOS Sierra) tidak mendukung c
tetapi tidak mendukung k
, m
, g
, dll)
Ada cara lain untuk mencapai hasil yang sama juga:
sed '1s/^...//' A_FILE
Ini berfungsi jika ada 3 karakter atau lebih di baris pertama.
tail -c +4 A_FILE
Dan Anda bisa menggunakan Perl, Python dan sebagainya juga.
dd if=A_FILE bs=1 skip=3
dalam AIX 6.1Alih-alih menggunakan
cat
Anda dapat menggunakantail
seperti itu:Ini akan mencetak seluruh file kecuali untuk 3 byte pertama. Konsultasikan
man tail
untuk informasi lebih lanjut.sumber
/usr/xpg4/bin/tail
, setidaknya di komputer saya. Meskipun begitu, tip yang bagus!Saya perlu melakukan sesuatu yang serupa baru-baru ini. Saya membantu dengan masalah dukungan lapangan dan perlu membiarkan teknisi melihat plot waktu nyata saat mereka melakukan perubahan. Data dalam log biner yang tumbuh sepanjang hari. Saya memiliki perangkat lunak yang dapat menguraikan dan memplot data dari log, tetapi saat ini tidak real time. Apa yang saya lakukan adalah menangkap ukuran log sebelum saya mulai memproses data, kemudian masuk ke loop yang akan memproses data dan setiap pass membuat file baru dengan byte file yang belum diproses.
sumber
ls
; sudahkah Anda mempertimbangkan untuk menggunakanstat -c'%s' "${IFILE}"
bukannyals|awk
kombo itu? Yaitu, dengan asumsi GNU coreutils ...Jika seseorang memiliki Python di sistem mereka, seseorang dapat menggunakan skrip python kecil untuk memanfaatkan
seek()
fungsi untuk mulai membaca pada byte ke-n seperti ini:Dan penggunaannya akan seperti ini:
Perhatikan bahwa jumlah byte dimulai pada 0 (dengan demikian byte pertama sebenarnya indeks 0), sehingga dengan menentukan 3 kita secara efektif memposisikan pembacaan dimulai pada 3 + 1 = byte 4
sumber