Bash:文字列操作

2004 ワード

参考:http://blog.csdn.net/finewings/article/details/5718133
文字列抽出
指定されたプレフィックスを削除
1.$              最初から左に右に、一番短いpatternの最後の文字列を削除します。つまり最初のpatternの最後の文字列を切り取ります。
例えば、クラスタ内のサーバのホスト名は、一般的にnode000、node 001、node 002などである。このデジタルコードIDだけを抽出したい場合、次のようにすることができる。
ubuntu@dev00:~$ hn=$(hostname)



ubuntu@dev00:~$ echo ${hn#dev}

00
現在のマシン名はdev 00です。もちろんワイルドカードも加入できます。
$ x="abcdefg"

$ echo ${x#*'cd'}

efg
前のabさえ取れました。
2.$              最初から左に右に行って、一番長いのをpatternで終わる部分列を削除します。つまり最後の部分をpatternで結んだ後の文字列を切り取ります。
例:x="009"~"019"これらの文字をプリアンブルゼロなしの形で抽出します。x中にゼロがあるかもしれないので、最後の0をカットオフ位置にすることができます。
ubuntu@dev00:~$ x='009'

ubuntu@dev00:~$ echo ${x##*0}

9
指定されたサフィックスを削除
これは「指定されたプレフィックスを除く」とほぼ同じです。方向が変わったということです。
1.「{variable%pattern}
2.「{variable%%pattern}
固定位置
ドル{varible:start:len}             :切り取り変数varibleは位置startから長さlenのサブストリングです。最初の文字の位置は0です。
これは一般言語のsubstr(index,len)と一致しています。
ubuntu@dev00:~$ echo ${hn:3:2}