2013-05-20 2 views
2

here에서 시작하여 파일을 읽으려고하고 파일의 머리와 꼬리를 내 보냅니다 (파일을 한 번만 읽음). tee를 통해 꼬리와 머리를 통해 파일 파이핑

나는 다음과 같은 시도 : 예상대로 tee >(head) >(tail) > /dev/null < text.txt

이 줄은 작동하지만, 난을/dev/null을 제거하고 싶습니다. 그것은 머리를 인쇄하지만 그 후 반환하지 않습니다 tee >(head) | tail < text.txt

그러나 예상대로 (물론 내가 예상 한대로)이 라인은 작동하지 않습니다 그래서 시도했다. 분명히 꼬리가 뭔가를 기다리고 있습니다. 그러나 나는 무엇이 정확하게 있는지를 모른다. 이 부분은 SO question입니다. 그러나 주어진 답변으로 실행시킬 수 없습니다.

답변

5

tee >(head) | tail < text.txt에서 텍스트 파일은 tail으로 바로 이동합니다. 당신은 아마 티와 머리를 모두 출력이 꼬리로 이동하기 때문에, 아무것도 기다리지 않습니다,하지만 중 하나가 작동하지 않는

tee >(head) < text.txt | tail 

을 의미했다.

새 파일 설명자에 머리의 출력을 리디렉션 다음 작품을 다시 복용,하지만 난 그게는/dev/null을 사용하는 것보다 "깨끗한"입니다 확실하지 않다 : I 출력을 생각하지 않는다

(tee >(head >&3) < text.txt | tail) 3>&1 
+0

을 'head'의 값은'tee'의 출력에만 영향을받습니다. – chepner

+0

@chepner : 숫자가 1..100 인 파일을 생성 한 다음'tee> (head -n 3) choroba

+0

@chepner 실수입니다. 'echo -e "a \ nb \ nc"의 결과를 비교하라. 티> (헤드 -1) | tail-1'을'echo -e "의 결과에 적용합니다. \ nb \ nc"| 티> (헤드 -2) | 꼬리 -1 '. –