如何拆分字符串,其中包含更多相同字符。
例如name=John:adress=London
。我需要结果name
作为变量,而John:adress=London
作为值。
我不知道该怎么做。谢谢。
您可以使用切割。
# 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-
您可以使用剪切和命令分组
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
FLAG)。
接下来,分配了变量$INFO
的命令分组的值,其中第二个字段直到结束为末端。在这一部分中,两者之后的破折号:-f 2-
告诉BASH在第一个=
登录到末尾之后选择所有内容。
第一个平等符号将不在末端的$INFO
变量中。