筆者:大津 真
本連載ではシェルスクリプトの書き方をやさしく紹介します。対象とするシェルは、多くのLinuxディストリビューションが標準シェルとして採用する「Bash」です。第5回は、複数の文字列を柔軟なパターンで指定できる正規表現の基礎について解説します。
シェルスクリプトマガジン Vol.69は以下のリンク先でご購入できます。![]()
![]()
図2 シェルスクリプト「pref1.sh」の内容
#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "都道府県名を一つ指定してください"
exit 1
fi
file=meibo.txt
if grep ":${1}$" $file; then
count=$(grep -c ":${1}$" $file)
echo "-- ${1}は${count}件ありました --"
else
echo "-- ${1}は見つかりませんでした --"
fi
図3 シェルスクリプト「whileRead1.sh」の内容
#!/bin/bash
while read line
do
echo $line
done < meibo.txt
図4 シェルスクリプト「whileRead2.sh」の内容
#!/bin/bash
cat meibo.txt | while read line
do
echo $line
done
図5 シェルスクリプト「tokyo.sh」の内容
#!/bin/bash
count=0
grep ":東京$" meibo.txt | while read line
do
echo "$((++count)):${line}"
done
図6 シェルスクリプト「addpref.sh」の内容
#!/bin/bash
while read line
do
if echo $line | grep -q ":東京$"; then
echo $line | sed "s/:東京$/:東京都/"
elif echo $line | grep -q -e ":大阪$" -e ":京都$"; then
echo $line | sed "s/:\(..\)$/:\1府/"
elif echo $line | grep -q ":北海道"; then
echo $line
else
echo $line | sed "s/:\(..*\)$/:\1県/"
fi
done < meibo.txt