基本上我想透過字串分隔符號將字串拆分為數組,例如sep.
。是否有本地方法可以在不使用、bash
等工具的情況下執行此操作?我知道我可以透過設定和使用將字串拆分為數組,但這不適用於字串分隔符號。如果沒有,您將如何使用 、 等工具來做到這一點?sed
awk
IFS
read -ra
sed
awk
假設我有一個字串This is some sep.string
,我想將其拆分為一個包含 2 個元素的陣列:This is some
和string
。
答案1
您可以使用參數擴展手動迭代變數:
#!/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.
);它將餘數加到數組中,然後從變數的前面刪除餘數和分隔符號。迭代直到變數不再包含分隔符,然後將任何餘數加入數組。
答案2
有點像是使用參數擴充和 readarray 來完成此操作的本機方法
string='This is some sep.string'
mapfile -t array < <( echo "${string//sep./$'\n'}" )
${string//sep./$'\n'}
sep.
- 將用換行符號 替換出現的。 mapfile
/readarray
將建立一個數組,其中每一行都有其自己的元素。