【问题标题】:Splitting string to array in bash with long delimiter使用长分隔符在bash中将字符串拆分为数组
【发布时间】:2020-05-08 22:06:21
【问题描述】:

在 OSX 的终端中使用 bash,此代码:

newtext="FIRST<br><br>SECOND<br><br>THIRD" IFS='<br><br>' read -ra text_array <<< "$newtext" printf "%s\n" "${text_array[@]}"

输出:

第一






第二






第三>

为什么数组有这么多换行元素?如果我使用单字符分隔符,它可以工作。

【问题讨论】:

    标签: arrays bash macos ifs


    【解决方案1】:

    IFS 只能在每个单个字符上拆分字符串,当您提供 &lt;br&gt;&lt;br&gt; 时,它会拆分 &lt;br&gt; 上的输入。

    您可以使用此解决方法来完成您的工作:

    s="FIRST<br><br>SECOND<br><br>THIRD"
    del=$'\5'   # our arbitrary delimiter; can be any other control character
    IFS="$del" read -ra arr <<< "${s//<br><br>/$del}"
    declare -p arr
    

    declare -a arr='([0]="FIRST" [1]="SECOND" [2]="THIRD")'
    
    • del=$'\5' 将分隔符设置为控制字符 \5\5 只是一个任意字符,它可以替换为输入中不存在的任何其他字符。
    • "${s//&lt;br&gt;&lt;br&gt;/$del}"&lt;br&gt;&lt;br&gt; 替换为控制字符 \5
    • IFS="$del" 在填充数组时拆分 \5 上的输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2019-03-15
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多