2012-11-08 2 views
4

파일의 처음 세 줄을 읽고 화면에 출력하려면 다음과 같은 쉘 스크립트가 있어야합니다. 대신 2,3,4 줄을 출력하므로 제대로 작동하지 않습니다. 1,2,3의 라인 - 내가 뭘 잘못하고 있니? 귀하의 답변bash에서 파일의 처음 세 줄을 읽으십시오.

exec 6< rhyme.txt 

while read file <&6 ; 
do 
     read line1 <&6 
     read line2 <&6 
     read line3 <&6 

     echo $line1 
     echo $line2 
     echo $line3 
done 

exec 6<&- 

감사합니다 - 첫번째를 먹는 while 루프에서 read있다 head 명령의 알고 있지만 처음 세 줄

+4

'머리'가 더 나은 대안이 아닌가요? '머리 -3 rhyme.txt'와 같은 것. – darkgrin

+0

'head -3'이 작동하지만'head -n 3' – higuaro

+0

head -3 을 사용하는 것이 더 낫습니다. – bigyanshr

답변

6

을 표시 읽고 파일 디스크립터를 사용하고자 해요 I 선.

이 작업을 수행하려면 더 간단한 head -3을 사용할 수 있습니다.

5

그것은

$을 고려

while read file <&6 ; 

가가 2, 3, 4 라인

read line1 <&6 
read line2 <&6 
read line3 <&6 

처음 세 줄을 읽으려면을 읽는 첫 번째 라인을 읽고 머리 -3 rhyme.txt

대신

업데이트 : 당신은 혼자 read를 사용하려면

, 다음 while 루프를 생략하고 바로 수행

exec 6< rhyme.txt 

read line1 <&6 
read line2 <&6 
read line3 <&6 

echo $line1 
echo $line2 
echo $line3 

exec 6<&- 

또는 루프

:

exec 6< rhyme.txt 

for f in `seq 3`; do 
    read line <&6 
    echo $line 
done 

exec 6<&- 
8

당신 또한 헤드와 명령을 결합 할 수 있습니다.

head -3 rhyme.txt | 
while read a; do 
    echo $a; 
done 
1

예제 10 레코드를 얻기 위해 비슷한 작업이있어 ​​cathead을 사용했습니다. 다음은 나를 도운 한 라이너입니다 cat FILE.csv| head -11 여기에서 '11'을 사용하여 데이터와 함께 헤더를 포함 시켰습니다.

관련 문제