筆者:大津 真
本連載ではシェルスクリプトの書き方をやさしく紹介します。対象とするシェルは、多くのLinuxディストリビューションが標準シェルとして採用する「Bash」です。第5回は、複数の文字列を柔軟なパターンで指定できる正規表現の基礎について解説します。
シェルスクリプトマガジン Vol.69は以下のリンク先でご購入できます。
図2 シェルスクリプト「pref1.sh」の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/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」の内容
1 2 3 4 5 6 |
#!/bin/bash while read line do echo $line done < meibo.txt |
図4 シェルスクリプト「whileRead2.sh」の内容
1 2 3 4 5 6 |
#!/bin/bash cat meibo.txt | while read line do echo $line done |
図5 シェルスクリプト「tokyo.sh」の内容
1 2 3 4 5 6 7 |
#!/bin/bash count=0 grep ":東京$" meibo.txt | while read line do echo "$((++count)):${line}" done |
図6 シェルスクリプト「addpref.sh」の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/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 |