2017-02-28 110 views
2

我有以下的文件,並調用cat myfile | ./myscript.sh擊:分割(多)字符串到數組與multichar分隔符

(Item) 
(Values) 
blabla 
blabla 
(StopValues) 
(Item) 
(Values) 
hello 
hello 
(StopValues) 

在我的劇本,我從貓管道的內容保存到一個變量:s=$(cat)

我怎樣才能拆分此字符串具有(在本例的情況下)含有2個變量現在的陣列,一個說

(Item) 
(Values) 
blabla 
blabla 
(StopValues) 

另一個說

(Item) 
(Values) 
hello 
hello 
(StopValues) 
+0

不是一個確切的重複,因爲你沒有提有關數組的東西,但我這個問題的答案可能會給你一些想法:https://stackoverflow.com/questions/14630940/split-string-into-array-in-bash – user000001

+0

@ user000001除了一般的困惑,我看到的是在他的字符串中,他總是有他想要刪除的字符(可以用作分隔符,例如'======= '或'/')我沒有任何東西應該從我的字符串中刪除 – RandomDisplayName

回答

2

假設源字符串是在變量s,以下bash腳本將填充數組變量a要求:

a=() 
i=0 
while read -r line 
do 
    a[i]="${a[i]}${line}"$'\n' 
    if [ "$line" == "(StopValues)" ] 
    then 
    let ++i 
    fi 
done <<< "$s" 
+0

數組中的一個元素只包含一行,例如, 「blabla」,我寧願將「整個部分」放在一個元素中,就像問題 – RandomDisplayName

+0

@RandomDisplayName中所描述的那樣您是否嘗試運行代碼或者判斷它沒有運行? – Leon

+0

我試過了,雖然這可能會導致這種情況發生,但我有一個文件中的內容並將其傳遞給我的腳本,我更新了我的問題 – RandomDisplayName