4

我正在尝试根据 2 个分隔符在 BASH 中拆分字符串 - 空格和 \. 这是字符串:-

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]}"

提前致谢。

4

2 回答 2

11

我认为你需要这个:

IFS=' |\\' read -ra array_1 <<< "$var_result"
于 2014-08-06T14:56:57.463 回答
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;
于 2014-08-06T14:58:32.633 回答