server-memo.net

【シェルスクリプト】ファイルの中身を一行ずつ読み込む方法

   

シェルスクリプトで「while read line」を使い、ファイルの中身を一行ずつ読み込ませるための方法色々です。

標準入力へリダイレクトさせて読み込む

ファイルを標準入力へリダイレクトさせて中身を一行ずつ読み込ませています。

#!/bin/bash

while read line
do
  echo $line
done < ファイル名

スクリプト例

「list.txt」というファイルの中身を読み込ませて、一行ずつ「echo」で表示させています。

$ cat list.txt
one
two
three
four
five
#!/bin/bash
while read line
do
  echo $line
done < ./list.txt

上記スクリプトの実行結果です。

$ sh fileread_1.sh
one
two
three
four
five

ファイルを変数に格納して読み込む

ファイルの中身を「cat」コマンドで表示させ、それを変数に格納しヒアドキュメント(Here Document)を使用して読み込ませています。

#!/bin/bash

DATA=`cat ファイル名`

while read line
do
  echo $line
done << FILE
$DATA
FILE

スクリプト例

「list.txt」の中身を変数「DATA」に格納して、ヒアドキュメントを使って変数の中身を読み込ませています。

$ cat list.txt
one
two
three
four
five
#!/bin/bash
DATA=`cat ./list.txt`
while read line
do
  echo $line
done << FILE
$DATA
FILE

スクリプト実行結果です。

$ sh fileread_2.sh
one
two
three
four
five

catでファイルの中身を表示してパイプ(|)でわたす

ファイルの中身を「cat」で表示させて、その結果をパイプ(|)を使って読み込ませています。

#!/bin/bash

cat ファイル名 | while read line
do
  echo $line
done

スクリプト例

「lixt.txt」の中身を「cat」で表示させて、その結果をパイプ(|)で「while read line」に渡しています。

$ cat list.txt
one
two
three
four
five
#!/bin/bash
cat ./list.txt | while read line
do
  echo $line
done

スクリプト実行結果です。

$ sh fileread_3.sh
one
two
three
four
five

 - シェルスクリプト