Posiadanie przesunięcia bajtu dla pliku.
Czy istnieje narzędzie, które podaje numer linii dla tego bajtu?
- Liczba bajtów zaczynająca się od zera, jak w: pierwszy bajt to 0, a nie 1.
- Numer linii zaczynający się od 1.
- Plik może zawierać zarówno zwykły tekst, „binarne” obiekty BLOB, znaki wielobajtowe itp. Ale sekcja, która mnie interesuje: Koniec pliku, ma tylko ASCII.
Przykład pliku:
001
002
003 <<-- first zero on this line is byte 8
004
Posiadanie przesunięcia bajtu 8
, które dałoby mi linię 3
.
Chyba mógłbym użyć czegoś takiego do znalezienia numeru linii:
za. tail -c+(offset + 1) file | wc -l
, tutaj +1
jak się tail
liczy od 1.
b. wc -l file
do. Więc tail -n+num
gdzie num
jesta - b + 1
Ale ... czy jest jakieś dość powszechne narzędzie, które może mi num
bezpośrednio dać ?
Edytuj, err: lub bardziej oczywiste:
head -c+offset file | wc -l
0x0a
bajtami.
:echo byte2line(offset+1)
.
vim -b
i + otwartym pliku został uszkodzony. (Ach. Nagle przypominam sobie, która wtyczka to popsuła). Ale w każdym razie, ponieważ używam tego w partiach i w połączeniu z szeregiem skryptów, Vim został wcześnie porzucony. Ale i tak +1. vim
set binary
0xa
dowolne miejsce. Pojęcie wierszy w pliku binarnym jest bez znaczenia.