【23.ファイルを読む】ざっくりわかる「シェルスクリプト」

ファイルを読む

ファイルを読む:
whileループでreadコマンドを使用すると、bashで任意のファイルを1行ずつ読み取ることができます。‘read_file.sh’という名前のファイルを作成し、次のコードを追加してください。 別途作成する’book.txt’の内容を読み取ります。

「book.txt」ファイルを作成します。

$ vim book.txt
ファイルを読む:
ループを使用すると、bashで任意のファイルを1行ずつ読み取ることができます。
'read_file.sh'という名前のファイルを作成し、次のコードを追加して、'book.txt'という名前の既存のファイルを読み取ります。
#!/bin/bash

file='book.txt';
if [ -f "$file" ];then
  while read line;do
    echo "$line";
  done<$file
else
  echo "$file ファイルがありません";
fi

bashコマンドでファイルを実行します。

$ bash read_file.sh
ファイルを読む:
ループを使用すると、bashで任意のファイルを1行ずつ読み取ることができます。
'read_file.sh'という名前のファイルを作成し、次のコードを追加して、'book.txt'という名前の既存のファイルを読み取ります。

具体的に以下のファイルを作成してファイルを読み込み、必要な部分を抜き出して表示してみます。

i-0f6126b7aeedfabd6,hoge
i-050536efdd9dc1126,fuga
i-0869f24358fb3f698,f8k

cat します。

$ cat instance-tag.list
i-0f6126b7aeedfabd6,hoge
i-050536efdd9dc1126,fuga
i-0869f24358fb3f698,f8k
$ 

以下のソースファイルを作成します。

#!/bin/bash

# catしてwhile read で1行ずつ読み込む
# 「cat instance-tag.list」の結果を1行ずつ「line」
# という変数に代入しています。
cat instance-tag.list | while read line;do
  # 二つの変数に値切り出して代入
  # $()は()内で指定したコマンドの実行結果を返します。 
  # 今回の場合、「echo $line | cut -d, -f 1」の実行結果が
  # 「instance_id」に定義されます。
  instance_id=$(echo $line | cut -d, -f 1)
  tag_value=$(echo $line | cut -d, -f 2)
  
  # 表示
  echo "instance_id: ${instance_id}";
  echo "tag_value: ${tag_value}";
done

bashコマンドでファイルを実行します。

$ bash whileread_example2.sh
instance_id: i-0f6126b7aeedfabd6
tag_value: hoge
instance_id: i-050536efdd9dc1126
tag_value: fuga
instance_id: i-0869f24358fb3f698
tag_value: f8k
$
ヒント
cutコマンドの部分は、awkコマンドを使うこともあります。
今回は、cutの方が処理速度が速いため、cutコマンドを使いました。

ちなみにawkの場合は、以下のように記述します。

instance_id=$(echo $line | awk -F, '{print $1;}');
tag_value=$(echo $line | awk -F, '{print $2;}');

書籍の紹介

【22.存在を確認してディレクトリを作成する】ざっくりわかる「シェルスクリプト」

【22.存在を確認してディレクトリを作成する】ざっくりわかる「シェルスクリプト」

【24.ファイルを削除する】ざっくりわかる「シェルスクリプト」

【24.ファイルを削除する】ざっくりわかる「シェルスクリプト」