2013-05-10 42 views
9

長度> 4如何提取在bash

str = "abcdefghijklmno" 

一個子我有以下字符串中bash和欲提取到str2str 5第一charachter。所以

str2="abcde" 

如何用bash做到這一點?

+0

你可以使用'man bash'來查看這種類型的東西的命令列表 – user1527227 2014-07-02 02:43:10

回答

25

不要使用表達式

{string:position:length} 

因此,在這種情況下:

$ str="abcdefghijklm" 
$ echo "${str:0:5}" 
abcde 

見其他用途:

$ echo "${str:0}"  # default: start from the 0th position 
abcdefghijklm 
$ echo "${str:1:5}" # start from the 1th and get 5 characters 
bcdef 
$ echo "${str:10:1}" # start from 10th just one character 
k 
$ echo "${str:5}"  # start from 5th until the end 
fghijklm 

來自
- wooledge.org - How can I use parameter expansion? How can I get substrings? How can I get a file without its extension, or get just a file's extension?
- Shell Command Language - 2.6.2 Parameter Expansion

+0

+1沒有「外部」命令的用法。 :)如果OP願意,將結果放入'str2'中會更好。 – Kent 2013-05-10 14:52:14

+2

這是正確的答案,但我會建議一個不同的參考--Freenode的#bash將ABS視爲bug的來源,而不是智慧。考慮http://mywiki.wooledge.org/BashFAQ/073 – 2013-05-10 14:53:52

+0

不知道那個網站,@CharlesDuffy,我喜歡那個鏈接,所以讓我們改變它。謝謝! – fedorqui 2013-05-10 14:58:28