我有一个文件,内容如下:
输入.txt
export k="v"
v 可能包含诸如
目标是存储 v (在名为 oputput.txt 的文件中不带双引号)
例如,我可能有这样的东西
export a_a="foooo
barrrrr"
请注意,它可以是多行的 - 而且我对输入没有太多控制权
我首先得到密钥长度如下
key=$(cat "$filename" | cut -d '=' -f 1 | cut -d ' ' -f 2)
key_size= echo $key | wc -c
echo key_size
trim_size=$(( $key_size + 9 ))
value=$(cat "$filename" | cut -c $trim_size- | rev | cut -c 2- | rev)
echo -n "$value"> $key
我很期待这个
foooo
barrrrr
但是我明白了
foooo
问题应该出在这里
value=$(cat "$filename" | cut -c $trim_size- | rev | cut -c 2- | rev)
我想要这条线来治疗
作为字符而不是新行。
我该如何修复它?
POSIX 外壳:
tmpvar=$(cat input.txt)
key=${tmpvar%%=*}
key=${key#export }
value=${tmpvar#*\"}
value=${value%\"*}
重击:
[[ $(<input.txt) =~ "export "([^=]+)=\"(.*)\".* ]]
key=${BASH_REMATCH[1]}
value=${BASH_REMATCH[2]}