如何拆分包含更多相同字符的字符串。
例如name=John:adress=London
。我需要将结果name
作为变量,将John:adress=London
作为值。
我不知道怎么做。感谢。
答案 0 :(得分:1)
您可以使用cut。
# print first field
echo "name=John:@(ADDRESS=(LONDON=(STREET=XY)))" | cut -d = -f 1
# print remaining fields
echo "name=John:@(ADDRESS=(LONDON=(STREET=XY)))" | cut -d = -f 2-
答案 1 :(得分:0)
您可以使用剪切和命令分组
INPUT='name=@(ADDRESS=(LONDON=(STREET=XY)))'
NAME=$(echo "$STR" | cut -d '=' -f 1)
INFO=$(echo "$STR" | cut -d '=' -f 2-)
第一行中的单引号可防止任何特殊的bash符号按字面解释。变量$NAME
接受命令分组的值,由$()
表示。 $INPUT
将回显到cut
命令,其中分隔符=
由-d
标志指定,并指定第一个字段(-f
标志)
接下来,为变量$INFO
分配命令分组的值,其中表示直到结尾的第二个字段。在此部分中的两个之后的短划线:-f 2-
告诉bash在第一个=
符号结束后选择所有内容。
第一个等号不会在最后的$INFO
变量中。