拆分bash中由字符串分隔的字符串

时间:2016-07-04 20:21:12

标签: string bash awk

我正在尝试拆分这种字符串:

file1 -> file2

并期望将“file1”和“file2”影响为2个变量。

我尝试使用IFS但它似乎仅适用于一个字符长(IFS =“ - >”我得到“file1”和“> file2”......

基于this article,我尝试了另一种方法:

awk 'BEGIN {FS=" -> "} {xxx}' <<< $f

问题是我没有成功影响$ 1和$ 2变量,我以后可以使用...

2 个答案:

答案 0 :(得分:1)

您可以使用 $()

VARIABLE="$(awk 'BEGIN {FS=" -> "} {for(i=1;i<=NF;i++)print $i}' <<< $f)"

您可以将结果分配给数组:

ARRAY=( $(awk 'BEGIN {FS=" -> "} {for(i=1;i<=NF;i++)print $i}' <<< $f) )

并将值提取为单独的变量:

${ARRAY[0]}
${ARRAY[1]}
and so on...

并将其分配给您的变量。

答案 1 :(得分:1)

您可以通过多种方式执行此操作:

str="file1 -> file2"

echo "Fast"
var1="${str% -> *}"
var2="${str#* -> }"
printf "%s=%s.\n" var1 "${var1}" var2 "${var2}"

echo "With cut"
var1="$(echo ${str}|cut -d" " -f1)"
var2="$(echo ${str}|cut -d" " -f3)"
printf "%s=%s.\n" var1 "${var1}" var2 "${var2}"

echo "With read"
read -r var1 arrow var2 <<< ${str}