我正在尝试拆分这种字符串:
file1 -> file2
并期望将“file1”和“file2”影响为2个变量。
我尝试使用IFS但它似乎仅适用于一个字符长(IFS =“ - >”我得到“file1”和“> file2”......
基于this article,我尝试了另一种方法:
awk 'BEGIN {FS=" -> "} {xxx}' <<< $f
问题是我没有成功影响$ 1和$ 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}