在Bash中读取文件的前三行



我有以下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命令,但想使用读取和文件描述符显示前三行

您还可以将头和命令结合在一起:

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

它读取第一行

while read file <&6 ;

它读取第二,第三和第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<&-

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

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

我有类似的任务,以获取10个记录并使用cathead。以下是帮助我cat FILE.csv| head -11的班轮在这里,我使用了" 11",以包括标头以及数据。

相关内容

  • 没有找到相关文章

最新更新