Bash

如何將字元串按字元串(多字元)分隔符拆分為數組?

  • June 5, 2019

基本上我想通過字元串分隔符將一個字元串拆分為一個數組sep.,例如。是否有本地bash方法可以在不使用 , 等工具的情況下做到這sed一點awkIFS我知道我可以通過設置和使用將字元串拆分為數組,read -ra但這不適用於字元串分隔符。如果沒有你會如何使用 , 等工具sedawk

假設我有字元串This is some sep.string,我想將它拆分為一個包含 2 個元素的數組:This is somestring.

您可以使用參數擴展手動迭代變數:

#!/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.);它將餘數添加到數組中,然後從變數的前面去除餘數和分隔符。迭代直到變數不再包含分隔符,然後將任何餘數添加到數組中。

引用自:https://unix.stackexchange.com/questions/523118