在bash中将除了第一行和最后一行以外的所有内容读入字符串
我试图将一个.csr文件读入一个字符串,但我不想要该文件的第一行和最后一行 我尝试将文件读入字符串,然后将其拆分为数组,但语法无法正常工作 我也试着把它读成一个字符串,然后去掉第一行和最后一行(它们永远不会改变),但我也遇到了同样的问题 我是bash新手,只需要编写这个脚本,任何帮助都将不胜感激 文件为test.csr,如下所示:在bash中将除了第一行和最后一行以外的所有内容读入字符串,bash,Bash,我试图将一个.csr文件读入一个字符串,但我不想要该文件的第一行和最后一行 我尝试将文件读入字符串,然后将其拆分为数组,但语法无法正常工作 我也试着把它读成一个字符串,然后去掉第一行和最后一行(它们永远不会改变),但我也遇到了同样的问题 我是bash新手,只需要编写这个脚本,任何帮助都将不胜感激 文件为test.csr,如下所示: -----BEGIN CERTIFICATE REQUEST----- TESTESTESTESTESTESTSETESTEESSTSETESTTESTES TEST
-----BEGIN CERTIFICATE REQUEST-----
TESTESTESTESTESTESTSETESTEESSTSETESTTESTES
TESTESTESTESTESTESTSETESTEESSTSETESTTESTES
...
-----END CERTIFICATE REQUEST-----
作为脱衣的尝试,我用了
csrFile=`cat server.csr`
#echo "$csrFile"
#csrFile=${csrFile##*-----BEGIN CERTIFICATE REQUEST----- }
#csrFile=${csrFile%% -----END CERTIFICATE REQUEST-----*}
#echo "$csrFile"
但当我重复这句话时,整根绳子仍然完好无损
我尝试拆分为数组
readarray -t my_array <<<"$csrFile"
echo "$my_array"
echo "$csrFile"
( IFS=$'\n'; echo "${csrFile[*]}" )
readarray-t my_arraysed
非常适合这份工作
要去除第一行和最后一行,请使用
sed '1d;$d' server.csr
或者如果你想更精确一些,试试看
sed '/-----\(BEGIN\|END\) CERTIFICATE REQUEST-----/d' server.csr
要将结果读入变量,请使用shell$()
语法:
csrfile=$(sed '/-----\(BEGIN\|END\) CERTIFICATE REQUEST-----/d' server.csr)
一种更便于携带的方法是使用实际上可以读取CSR的工具,如openssl
:
openssl req -in server.csr -outform der | base64 -w64
-outform der
将CSR编码为二进制(实际上是ASN1)
base64-w64
将其返回base64,每行64个字符可能重复:您好,谢谢,我如何将sed读入变量?我的尝试是:csrString=sed'/----开始证书请求------/d/-----结束证书请求------/d'server.csr echo“$csrString”使用csrFilteredString=$(echo“$a”| sed'/----开始证书请求------/d;/----结束证书请求------/d'server.csr)echo“$csrFilteredString”