Używam powłoki ksh AIX 6.1.
Chcę użyć jednej wkładki, aby zrobić coś takiego:
cat A_FILE | skip-first-3-bytes-of-the-file
Chcę pominąć pierwsze 3 bajty pierwszego wiersza; czy jest na to sposób?
shell
text-processing
aix
ksh
Alvin SIU
źródło
źródło
dd if=A_FILE bs=1 skip=3
w systemie AIX 6.1Zamiast używać
cat
możesz użyćtail
jako takiego:Spowoduje to wydrukowanie całego pliku z wyjątkiem pierwszych 3 bajtów. Skonsultuj się
man tail
po więcej informacji.źródło
/usr/xpg4/bin/tail
, przynajmniej na moim komputerze. Niemniej jednak dobra wskazówka!Musiałem ostatnio zrobić coś podobnego. Pomagałem w problemach z obsługą techniczną i musiałem pozwolić technikowi zobaczyć wykresy w czasie rzeczywistym, gdy wprowadzali zmiany. Dane znajdują się w dzienniku binarnym, który rośnie przez cały dzień. Mam oprogramowanie, które może analizować i drukować dane z dzienników, ale obecnie nie jest to czas rzeczywisty. To, co zrobiłem, to przechwycenie rozmiaru dziennika, zanim zacząłem przetwarzać dane, a następnie przeszedłem do pętli, która przetworzy dane i za każdym razem utworzy nowy plik z bajtami pliku, który nie został jeszcze przetworzony.
źródło
ls
; czy rozważałeś użyciestat -c'%s' "${IFILE}"
zamiast tego zestawuls|awk
? To znaczy, zakładając, że GNU coreutils ...Jeśli ktoś ma Python w swoim systemie, można użyć małego skryptu Python, aby skorzystać z
seek()
funkcji, aby rozpocząć czytanie od n-tego bajtu, tak jak:A użycie byłoby takie:
Zauważ, że liczba bajtów zaczyna się od 0 (tak więc pierwszy bajt to tak naprawdę indeks 0), dlatego określając 3, efektywnie pozycjonujemy odczyt tak, aby zaczynał się od 3 + 1 = 4 bajt
źródło