在bash中读取文件的前三行

时间:2012-11-08 16:02:58

标签: linux bash shell

我有以下shell脚本来读取文件的前三行并将它们打印到屏幕 - 它无法正常工作,因为它打印出行2,3,4而不是行1,2,3 - 什么我做错了吗?

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<&-

感谢您的回答 - 我知道head命令但想要使用读取和文件描述符来显示前三行

4 个答案:

答案 0 :(得分:9)

您还可以组合head和while命令:

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

答案 1 :(得分:6)

read循环中有一个while,它占据了第一行。

您可以使用更简单的head -3来执行此操作。

答案 2 :(得分:6)

它读取第一行

while read file <&6 ;

它读取第2行,第3行和第4行

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

如果您想阅读前三行,请考虑

  

$ head -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<&-

答案 3 :(得分:2)

我有类似的任务,获取样本10条记录并使用cathead来达到目的。 以下是帮我cat FILE.csv| head -11的一个班轮 在这里,我使用了&#39; 11&#39;以便包含标题和数据。