Linux 在bash中读取文件的前三行

Linux 在bash中读取文件的前三行,linux,bash,shell,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

我有下面的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<&-
exec 6当读取文件时,
while
循环中有一个
read
,它吃掉了第一行


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

它读取第一行

while read file <&6 ;
或使用循环:

exec 6< rhyme.txt

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

exec 6<&-
exec 6read line您还可以组合head和while命令:

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

我得到了类似的任务,获得了样本10条记录,并为此使用了
cat
head
。 下面是帮助我
cat FILE.csv | head-11

在这里,我使用了“11”,以便在数据中包含标题。

标题不是更好的选择吗?类似于'head-3 lyme.txt.
head-3
可以工作,但是使用
head-n3
head-3应该是最好的选择。如果你真的想在
读取时使用
,你也可以使用:
而IFS=read-r行;做回显“$line”;完成<这是一个错误“var在子shell中被修改。该更改可能会丢失。”
exec 6< rhyme.txt

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

exec 6<&-
head -3 rhyme.txt | 
while read a; do
  echo $a; 
done