You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中实现类似Python .split()的多字符分隔符分割并存入数组?

Bash 用多字符分隔符分割内容并存入数组

以下是几种可行的方案,均能将stdout内容按指定多字符分隔符分割后存入Bash数组:

方法一:借助GNU awk(推荐)

GNU awk支持将记录分隔符(RS)设为多字符串,配合readarray按空字节分割存入数组,能精准保留原内容中的换行等格式:

# 假设输入来自文件input.txt,若为stdin则替换为你的实际命令(如cat input.txt)
readarray -d '' arr < <(awk -v RS='dab' '{printf "%s\x00", $0}' input.txt)

方法二:借助GNU sed

通过sed将多字符分隔符替换为空字节,再用readarray按空字节分割:

readarray -d '' arr < <(sed 's/dab/\x00/g' input.txt)

验证数组内容

可以通过循环打印数组元素确认结果:

for elem in "${arr[@]}"; do
    echo "=== 分割结果 ==="
    echo "$elem"
done

说明

  • 上述方法依赖Bash 4.0+(readarray是Bash 4新增命令)及GNU工具链(GNU awk、GNU sed),主流Linux发行版均默认支持。
  • 使用空字节(\x00)作为临时分隔符,是因为它不会出现在常规文本中,能避免原内容中的特殊字符干扰分割逻辑。

内容的提问来源于stack exchange,提问作者Signor Pizza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 22:03:12