看板 Linux 關於我們 聯絡資訊
※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.66.37.44
appleboy46:第一種不就適用 cut 一樣意思 06/18 23:48
Xphenomenon:如果空格一多呢? cut 好像就不太適用? 06/19 01:01
Xphenomenon:阿 看錯,我應該多加` *' 讓可以 match 多個空格 @@ 06/19 01:02