2010-03-05 3 views
3

청크로 파일 청크를 읽는 데 사용할 수있는 표준 Linux 명령이 있습니까? 예를 들어, 크기가 6kB 인 파일이 있습니다. 첫 번째 1kB를 읽은 다음 두 번째 1kB를 읽고 싶습니다. 이 경우 고양이/머리/꼬리는 작동하지 않습니다.청크로 파일 청크를 읽거나 인쇄하는 Linux 쉘 명령

대단히 감사합니다.

while read -r -d '' -n 1024 BYTES; do 
    echo "$BYTES" 
    echo "---" 
done < file.dat 
+0

아마도 dd? – Karussell

답변

3

DD 그것이

dd if=your_file of=output_tmp_file bs=1024 count=1 skip=0 

그리고 생략 할 것이다 :

+0

답장을 보내 주셔서 감사합니다. 난 한 후 : DD 경우 = eco.log 학사 = 1024 카운트 = 1 개 건너 뛰기 = 1 (I은 표준 출력으로 출력을 선호) 나는 내가 원하는 정보가 뒤에있어 : ​​밖으로 0 + 1 기록에 0 + 1 기록 508 바이트 (508B) 복사, 6.6e-05 초, 7.7MB/s 어떻게 I/O 통계 정보를 무시할 수 있습니까? 나는 dd를 돌보고 그런 사일런트가 없다. – datasunny

+0

신경 쓰지 마라. 단지 그 I/O stat가 stderr에 출력된다는 것을 알았다. 나는 그것들을 쉽게 무시할 수있다. 모두에게 감사드립니다! – datasunny

6
당신은 루프에서 read -n이 할 수

계산 지정된 바이트에 의해 조각으로 파일을 분할 할 수 있습니다 두 번째 청크에 대해서는 1, 기타 등등.

그런 다음 청크를 얻으려면 output_tmp_file을 읽을 필요가 있습니다.

+0

어떻게하면 16 진수로 인쇄 할 수 있습니까? –

0

당신은 fmt

예를 들어 10 바이트

$ cat file 
a quick brown fox jumps over the lazy dog 
good lord , oh my gosh 

$ tr '\n' ' '<file | fmt -w10 file 
a quick 
brown fox 
jumps 
over 
the lazy 
dog good 
lord , oh 
my gosh 

각 행은 10 자입니다 사용할 수 있습니다. 당신이 2 덩어리를 읽으려면,

$ tr '\n' ' '<file | fmt -w10 | awk 'NR==2' # print 2nd chunk 
brown fox 

이 파일에 각 청크를 저장하려면 AWK의 ..eg 같은 도구에 전달 (또는 당신은 -b와 split을 사용할 수 있습니다)

$ tr '\n' ' '<file | fmt -w10 | awk '{print $0 > "file_"NR}' 
1

가 있습니까 너는 실제로 을 읽으려고 텍스트 파일을 읽습니까? 당신의 눈처럼? less 또는 more