如何在 bash 中修剪文件中的前 n 个字符和最后 m 个字符

问题描述 投票:0回答:1

我有一个文件,内容如下:

输入.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)
我想要这条线来治疗 作为字符而不是新行。

我该如何修复它?

bash
1个回答
0
投票

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]}
© www.soinside.com 2019 - 2024. All rights reserved.