Bash:文字列操作
2004 ワード
参考:http://blog.csdn.net/finewings/article/details/5718133
文字列抽出
指定されたプレフィックスを削除
1.$ 最初から左に右に、一番短いpatternの最後の文字列を削除します。つまり最初のpatternの最後の文字列を切り取ります。
例えば、クラスタ内のサーバのホスト名は、一般的にnode000、node 001、node 002などである。このデジタルコードIDだけを抽出したい場合、次のようにすることができる。
2.$ 最初から左に右に行って、一番長いのをpatternで終わる部分列を削除します。つまり最後の部分をpatternで結んだ後の文字列を切り取ります。
例:x="009"~"019"これらの文字をプリアンブルゼロなしの形で抽出します。x中にゼロがあるかもしれないので、最後の0をカットオフ位置にすることができます。
これは「指定されたプレフィックスを除く」とほぼ同じです。方向が変わったということです。
1.「{variable%pattern}
2.「{variable%%pattern}
固定位置
ドル{varible:start:len} :切り取り変数varibleは位置startから長さlenのサブストリングです。最初の文字の位置は0です。
これは一般言語のsubstr(index,len)と一致しています。
文字列抽出
指定されたプレフィックスを削除
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}