Bash
如何將字元串按字元串(多字元)分隔符拆分為數組?
基本上我想通過字元串分隔符將一個字元串拆分為一個數組
sep.
,例如。是否有本地bash
方法可以在不使用 , 等工具的情況下做到這sed
一點awk
?IFS
我知道我可以通過設置和使用將字元串拆分為數組,read -ra
但這不適用於字元串分隔符。如果沒有你會如何使用 , 等工具sed
呢awk
?假設我有字元串
This is some sep.string
,我想將它拆分為一個包含 2 個元素的數組:This is some
和string
.
您可以使用參數擴展手動迭代變數:
#!/bin/bash var='This is some sep.string with newlines sep.another line' a=() while [[ $var =~ sep\. ]] do e=${var%%sep.*} a+=("${e}") var=${var#${e}sep.} done a+=("${var}")
這循環變數(在過程中更新它),從第一個分隔符開始(
%%
尋找最長的匹配,所以這將從字元串的末尾向後跟踪,直到第一個實例sep.
);它將餘數添加到數組中,然後從變數的前面去除餘數和分隔符。迭代直到變數不再包含分隔符,然後將任何餘數添加到數組中。