Bash拆分具有相同字符的单词
如何拆分包含更多相同字符的字符串 例如Bash拆分具有相同字符的单词,bash,Bash,如何拆分包含更多相同字符的字符串 例如name=John:address=London。我需要结果name作为变量,而John:address=London作为值 我不知道该怎么做。谢谢。您可以使用 可以使用剪切和命令分组 INPUT='name=@(ADDRESS=(LONDON=(STREET=XY)))' NAME=$(echo "$STR" | cut -d '=' -f 1) INFO=$(echo "$STR" | cut -d '=' -f 2-) 第一行中的单引号防止任何特殊的
name=John:address=London
。我需要结果name
作为变量,而John:address=London
作为值
我不知道该怎么做。谢谢。您可以使用
可以使用剪切和命令分组
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
分配命令分组的值,其中表示结束前的第二个字段。本部分中两个后面的破折号:-f2-
告诉bash选择第一个=
符号结束后的所有内容
第一个等号将不在末尾的
$INFO
变量中。不清楚。您的字符串是否与以下内容完全相同?所有内容都在同一行中,由:
分隔?文本完全是:name=John:@(ADDRESS=(LONDON=(STREET=XY)),并且都是同一行。您希望拆分此行的内容/方式是什么?使用用户输入作为变量名是不安全的。如果输入包含拆分为两个字符串的IFS=…
,该怎么办。第一个字符串“name”,第二个字符串“John:@(ADDRESS=(LONDON=(STREET=XY))”。
INPUT='name=@(ADDRESS=(LONDON=(STREET=XY)))'
NAME=$(echo "$STR" | cut -d '=' -f 1)
INFO=$(echo "$STR" | cut -d '=' -f 2-)