建议1:修复缺失的
建议2:修复
我有一个env文件
ENV=development
PORT=3000
SECRET_KEY=-----BEGIN PRIVATE KEY-----nKEYKEYKEYn-----END PRIVATE KEY-----n
我如何使用SED解析该文件以正确格式化它?
使用此解决方案
for line in `cat ${FILE_NAME_ENV}`
do
KEY=$(echo $line | sed 's/=.*//')
VAL=$(echo $line | sed 's/[^=]*=//')
echo $KEY
echo $VAL
done
但是由于值
中的空格,SECRET_KEY被分割为多行ENV
development
PORT
3000
SECRET_KEY
-----BEGIN
PRIVATE
PRIVATE
KEY-----nKEYKEYKEYn-----END
KEY-----nKEYKEYKEYn-----END
PRIVATE
PRIVATE
KEY-----n
KEY-----n
如何使键值在一行?
SECRET_KEY
-----BEGIN PRIVATE KEY-----nKEYKEYKEYn-----END PRIVATE KEY-----n
使用sed
$ sed -n 's/^(SECRET_KEY)=/1n/p' input_file
SECRET_KEY
-----BEGIN PRIVATE KEY-----nKEYKEYKEYn-----END PRIVATE KEY-----n
建议将echo
命令参数用"
括起来,将每行作为命令的单个参数。
建议1:修复缺失的"
for line in "$(cat ${FILE_NAME_ENV})"; do
KEY=$(echo "$line" | sed 's/=.*//')
VAL=$(echo "$line" | sed 's/[^=]*=//')
echo "$KEY"
echo "$VAL"
done
输出1:ENV
PORT
SECRET_KEY
development
3000
-----BEGIN PRIVATE KEY-----nKEYKEYKEYn-----END PRIVATE KEY-----n
建议2:修复echo -e
接受n
作为换行
for line in "$(cat ${FILE_NAME_ENV})"; do
KEY=$(echo "$line" | sed 's/=.*//')
VAL=$(echo "$line" | sed 's/[^=]*=//')
echo "$KEY"
echo -e "$VAL"
done
输出2:ENV
PORT
SECRET_KEY
development
3000
-----BEGIN PRIVATE KEY-----
KEYKEYKEY
-----END PRIVATE KEY-----