8

ファイルの最初の 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 コマンドについては承知していますが、読み取りおよびファイル記述子を使用して最初の 3 行を表示したいと考えています。

4

4 に答える 4

16

head コマンドと while コマンドを組み合わせることもできます。

head -3 rhyme.txt | 
while read a; do
  echo $a; 
done
于 2012-11-08T16:27:19.063 に答える
7

最初の行を読み取ります

while read file <&6 ;

2行目、3行目、4行目を読み取ります

read line1 <&6
read line2 <&6
read line3 <&6

最初の 3 行を読みたい場合は、

$ 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<&-
于 2012-11-08T16:05:20.123 に答える
6

ループ内に があり、最初の行を消費しreadます 。while

これを行うには、より簡単な方法を使用できますhead -3

于 2012-11-08T16:05:17.383 に答える
2

同様のタスクを取得して、サンプル 10 レコードを取得し、目的のために使用catしました。head以下は私を助けた1つのライナーですcat FILE.csv| head -11 ここでは、データとともにヘッダーを含めるために「11」を使用しました。

于 2014-10-15T10:02:15.233 に答える