Gre*_*egg 4 string bash parsing field variable-assignment
在Bash shell脚本中,我正在处理以这样的方式开始的数据:
string1-string2-string3-string4-etc
Run Code Online (Sandbox Code Playgroud)
我需要string1并string2分配给唯一变量,并将string3-string4-etc另一个唯一变量放在一起.我试图设置IFS但随后发挥各地string3,string4以及etc为断开.
我怎样才能获得我想要的数据?如果可能的话,我更喜欢内置shell命令,但gawk或其他工具也很好.
che*_*ner 12
使用内置read命令:
str='string1-string2-string3-string4-etc'
IFS=- read str1 str2 the_rest <<< "$str"
Run Code Online (Sandbox Code Playgroud)
只要-字符始终是字段分隔符并且未嵌入任何子字符串中,以下内容将起作用:
str='string1-string2-string3-string4-etc'
a=$(echo "$str" | cut -d- -f1)
b=$(echo "$str" | cut -d- -f2)
c=$(echo "$str" | cut -d- -f3-)
Run Code Online (Sandbox Code Playgroud)
cut实用程序执行使用短划线作为分隔符来定义要捕获的字段的工作,并使用Bash 命令替换将cut的输出分配给变量.
$ echo "$a"; echo "$b"; echo "$c"
string1
string2
string3-string4-etc
Run Code Online (Sandbox Code Playgroud)