シェルスクリプトで部分文字列を切り出す方法
例:"myokoym(25)"の括弧内の数字だけを取り出したい場合。
1.cutを使う
http://www.k4.dion.ne.jp/~mms/unix/linux_com/cut.html
$ echo "myokoym(25)" | cut -d"(" -f2 | cut -d")" -f1 25
上記は、cutコマンドを区切り文字指定で使用する例です。
「-dオプションで区切り文字を指定し、-fオプションでn番目に区切られている文字列を切り出す」という処理を2回繰り返しています。(nは1から始まる)
2.sedを使う
http://www.k4.dion.ne.jp/~mms/unix/linux_com/sed.html
$ echo "myokoym(25)" | sed -e "s/^.*(\(.*\)).*$/\1/" 25
上記はsedのsコマンドで、文字列の置換を行っています。
文法は、「s/置換前/置換後/」です。
上の例では、正規表現を使って処理しています。おおまかな流れは、
- 行頭「^」から行末「$」までを置換対象とする。
- 開き括弧「(」と閉じ括弧「)」で囲まれた文字列「\(.*\)」へ置換する。(「\(」と「\)」で囲むと、\1に格納される)
といった感じです。
どちらを使っても実現可能ですが、わかり易さではcut、柔軟性ではsedが上かと思います。