2013-01-16 37 views

Trả lời

41

Bạn có thể yêu cầu head để đọc một số byte. Đối với trường hợp cụ thể của bạn:

$ head -c 8 <file> 

Hoặc trong một biến:

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

Bạn có thể sử dụng một mảng trong bash và chỉ chọn các ký tự đầu tiên. Hướng dẫn Script Bash nâng cao có các ví dụ tốt về cách sử dụng các mảng.

+0

Điều này thực sự chỉ là một nửa câu trả lời. Làm thế nào bạn sẽ chọn chỉ 8 ký tự đầu tiên từ mảng? – chepner

+1

echo $ {arrayZ [@]: 1: 2} # hai ba Nó nằm ngay trong ABS. Cấp, hơi buồn tẻ. Thay thế là sử dụng vòng lặp. Giải pháp BTW ở trên bằng cách sử dụng "đầu" không chỉ sử dụng nội trang bash. "head" là một chương trình bên ngoài. – mrkafk

6

trong bash

help read 

bạn sẽ thấy rằng bạn có thể:

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

Nếu bạn muốn đọc 8 đầu tiên, độc lập với các máy tách,

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

Nhưng tránh sử dụng

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

như, trong bash, các bộ phận sau một "|" được chạy trong một subshell: "biến" sẽ chỉ được thay đổi trong subshell đó, và nó là giá trị mới bị mất khi returing đến shell hiện tại.

+0

lệnh cuối cùng đặt 'IFS' thành' '' 'chỉ trong khoảng thời gian của lệnh sau (ở đây,' read') –

+0

Phiên bản 4 của 'bash' giới thiệu tùy chọn' -N', hoạt động như '-n 'nhưng cũng bỏ qua các dấu phân tách. – chepner

+0

Tôi sử dụng bash 2.x tại nơi làm việc ^^ (nhưng tốt để biết) –

Các vấn đề liên quan