bash 字串擷取 - Linux

Table of Contents

※ 引述《Spig (Spig)》之銘言:
: ※ 引述《Xphenomenon (啦 )》之銘言:
: : 請問各位大大,假如我有一個變數:
: : str='aaa bbb'
: : echo ${str:0:3}
: : echo ${str:4}
: : 這樣可以分別把 aaa 和 bbb 抽取出來,
: : 但是我現在要抽取的字串我無法事先知道他的長度,
: : 有可能另一個字串是 'cccccccc ddddddd',
: : 請問在 bash 裡面有什麼好方法嗎? 先感謝了! :>
: str='aaa bbb'
: for i in $str; do
: echo $i
: done
: Result:
: aaa
: bbb
找到兩種方法,跟大家分享:

# example:
# source='111111 bbbbb
# first=`echo $source | sed -n 's/\([^ ]*\) .*/\1/p'`
# second=`echo $source | sed -n 's/[^ ]* \(.*\)/\1/p'`
#
# OUTPUT:
# first == 111111
# second == bbbbb


另一種:
while read first rest; do echo "$first = $rest"; done < file.txt

--

All Comments

Puput avatarPuput2009-06-23
第一種不就適用 cut 一樣意思
Enid avatarEnid2009-06-26
如果空格一多呢? cut 好像就不太適用?
Skylar Davis avatarSkylar Davis2009-06-30
阿 看錯,我應該多加` *' 讓可以 match 多個空格 @@