将字符串拆分为具有多个分隔符的数组 shell

split string into array with multiple delimiters shell

我有一个文本文件,其内容格式为...

File=/opt/mgtservices/probes/logs is_SS_File=no is_Log=yes Output_File=probes_logs

这可以有大约 1k 条记录。我正在逐行读取文件。

while read -r line
do
  if [ $SS_SERVER -eq 0 ]
  then
    arr=$(echo "$line" | tr ' =' "\n")
    echo $arr[1]
    #do something
  elif [[ $SS_SERVER -eq 1 && "$line" =~ "is_SS_File=\"no\"" ]]
  then
    #do something else
  fi
done < "$filename"

我希望 arr 应该是一个数组,这样我就可以得到如下输出:

arr[1]=File
arr[2]=/opt/mgtservices/probes/logs
arr[3]=is_SS_File
and so on...

我还没到这里。 arr[1] 给了我没有“=”的完整行 我想使用 2 个分隔符 "space" 和“=”。

根据您要完成的目标试试这个:

tr ' =' '\n ' <"$file" |
while read keyword value; do
    : you get one keyword and its value at a time now
done

或者也许

while IFS=' =' read -a arr; do
    : arr[0] is first keyword
    : arr[1] is its value
    : arr[2] is second keyword
    : etc
done <"$file"