2013-01-16 20 views

Odpowiedz

41

Możesz poprosić head o odczytanie pewnej liczby bajtów. Dla konkretnego przypadku:

$ head -c 8 <file> 

Albo w zmiennej:

foo=$(head -c 8 <file>) 
1

Możesz użyć tablicy w bash i wybrać tylko pierwsze znaki. Przewodnik zaawansowanego skryptu Bash zawiera dobre przykłady korzystania z tablic.

+0

To naprawdę tylko połowa odpowiedzi. Jak wybrałbyś tylko 8 pierwszych znaków z tablicy? – chepner

+1

echo $ {arrayZ [@]: 1: 2} # dwa trzy Jest tam w ABS. To trochę uciążliwe. Alternatywą jest użycie pętli. Rozwiązanie BTW powyżej, używając "head", nie używa tylko wbudowanych bash. "head" to program zewnętrzny. – mrkafk

6

w bash

help read 

zobaczysz, że można:

read -r -n 8 variable < .the/file 

Jeśli chcę przeczytać pierwsze 8, niezależnie od separatorów,

IFS= read -r -n 8 variable < .the/file 

jednak unikać

.... | while IFS= read -r -n 8 variable 

jak w bashu części po "|" są uruchamiane w podpowłoce: "zmienna" zostałaby zmieniona tylko w tej podpowłoce, a jej nowa wartość straciłaby podczas odtwarzania do obecnej powłoki.

+0

ostatni zestaw poleceń 'IFS' na' '' 'właśnie na czas poniższego polecenia (tutaj,' odczyt') –

+0

Wersja 4 'bash' wprowadza opcję' -N', która działa jak '-n 'ale także ignoruje ograniczniki. – chepner

+0

Używam bash 2.x w pracy ^^ (ale dobrze wiedzieć) –

Powiązane problemy