在Bash中使用2个不同的分隔符拆分字符串

时间:2014-08-06 14:47:32

标签: regex string bash split ifs

我试图在BASH中基于2个分隔符拆分字符串 - 空格和\。这是字符串: -

var_result="Pass results_ADV__001__FUNC__IND\ADV__001__FUNC__IND_08_06_14_10_04_34.tslog"

我希望它按如下方式分为3部分: -

part_1=Pass
part_2=results_ADV__001__FUNC__IND
part_3=ADV__001__FUNC__IND_08_06_14_10_04_34.tslog

我尝试过使用IFS并将第一个分割得很好。但第二次拆分有些如何删除" \"并坚持整个部分,我得到分裂: -

test_res= Pass
log_file_info=results_ADV__001__FUNC__INDADV__001__FUNC__IND_08_06_14_10_04_34.tslog

我使用的IFS如下: -

echo "$var_result"
IFS=' ' read -a array_1 <<< "$var_result"
echo "test_res=${array_1[0]}, log_file_info=${array_1[1]}"

提前致谢。

2 个答案:

答案 0 :(得分:5)

我认为你需要这个:

IFS=' |\\' read -ra array_1 <<< "$var_result"

答案 1 :(得分:0)

这应该这样做

#!/bin/bash
var_result="Pass results_ADV__001__FUNC__IND\ADV__001__FUNC__IND_08_06_14_10_04_34.tslog"
field1=$(echo "$var_result" | awk -F ' ' '{print $(NF-1)}');
field2=$(echo "$var_result" | awk -F  \\ '{print $(NF-1)}');
field1=$(echo "$field1" | awk -F ' ' '{print $(NF-1)}');
field3=$(echo "$var_result" | awk -F  \\ '{print $2}');
echo $field1;
echo $field2;
echo $field3;