Linux 在bash中读取文件的前三行
我有下面的shell脚本来读取文件的前三行并将它们打印到屏幕上-它无法正常工作,因为它打印的是第2、3、4行而不是第1、2、3行-我做错了什么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
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 6 read 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