2015-01-07 2 views
1

나는 희소 한 파일을 읽어야하는 상황이 있습니다. 이 파일은 특정 오프셋의 데이터를 가지고 있습니다. 이제 나는 성취하기를 원합니다. 1) 지정된 오프셋에서 3 블록 (사용자 정의 크기)을 읽습니다. 2) 오프셋은 1M을 사용하여 검색해야합니다.dd를 사용하여 다른 블록 크기를 읽고 탐색하는 방법

그래서 아래 명령을 시도했지만 성공하지 못했습니다. 나는 내용을 더 읽고있다.

dd if=a_Sparse_file_ofSIZe_1024M of=/dev/null ibs=1M skip=512 obs=262144 count=3 

512M 블록을 건너 뛰고 512k + 1 번째 오프셋에서 3 카운트 256K 블록을 사용하여 읽습니다.

건너 뛰기는 항상 MB 단위이어야하며 개수 블록은 가변적이어야합니다. 나는 더 많은 데이터를 읽을 것이라고 확신한다. 누군가 나를 교정 해 줄 수 있습니까?

+0

두 번째 블록 크기에 어떤 제한이 있습니까? – Jasen

답변

1

count 매개 변수는 ibs을 기반으로하는 것으로 보입니다. 따라서 여기서는 obs 값이 중요하지 않습니다. obs 값이 ibs보다 4 배 작기 때문에 bs=256K을 설정하고 skip 값을 skip=2048에 곱하면됩니다.

+0

건너 뛰기는이 권한에 기반하여 ibs가 1M이어야합니다. MB 단위로 블록을 건너 뛸 필요가 있습니다. 하지만 독서하는 동안, 나는 가변 블록 크기의 지정된 개수를 읽어야합니다. –

3

할 수 있습니다 항상 문자열이 dd 건너 뛸 수있는 첫 번째와 실제 데이터를 읽을 수있는 두 번째, 함께 S :

dd if=a_Sparse_file_ofSIZe_1024M bs=1M skip=N | dd bs=262144 count=3 
+0

네 좋은 ides. 하지만 여전히 데이터 읽기는 256K의 3 카운트 이상입니다. –

+0

걱정되는 경우 첫 번째'dd '에'1'의 수를 추가 할 수 있습니다. 느린 디스크를 가지고 있다고 생각합니다 ... –

+0

죄송합니다! 가능한 느린 디스크가 원인입니다. (블록이 예상보다 높은 것으로보고되었습니다.) 빠른 디스크에서 제안을 시도해야합니다. 큰 감사합니다. –

관련 문제