我有以下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个记录并使用cat
和head
。以下是帮助我cat FILE.csv| head -11
的班轮在这里,我使用了" 11",以包括标头以及数据。