bash 繰り返しでスキップ

こんにちは、さるまりんです。

今回はシェルスクリプトです。

ファイルを読み込んで特定の条件にマッチした行は処理をスキップするスクリプトを書いてみました。

こんなのです。

linehasapple.sh

#!/bin/sh
FILE=$1
cat $FILE | while read LINE
do
  if [[ ! "$LINE" =~ "apple" ]]
  then
    continue
  fi
  echo $LINE
done

このスクリプトはファイルを読み込んで、行がappleを含まなければスキップし、含んでいる場合は行を出力します。

こんなファイルがあります。

fruits.txt

banana
watermelon
apple
strawberry
orange
kiwi
grapefruit
cherry
pineapple
grape
muscat
mango
green apple
peach
lime
pear

フルーツの名前が1行に1つあります。この中でappleを含むのは"apple", "pineapple", "green apple"の3つです。

このファイルをスクリプトで読み込んでみます。

$ ./linehasapple.sh fruits.txt 
apple
pineapple
green apple

該当の行のみ表示されました。

他のプログラミング言語にもあるcontinueはシェルの世界でも同様に使えるんですね。

読んでくださってありがとうございました。

それではまた!