我有以下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命令但想要使用读取和文件描述符来显示前三行
答案 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条记录并使用cat
和head
来达到目的。
以下是帮我cat FILE.csv| head -11
的一个班轮
在这里,我使用了&#39; 11&#39;以便包含标题和数据。