将字符串拆分为具有多个分隔符的数组 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"
我有一个文本文件,其内容格式为...
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"