如何使用 linux 中的 shell 脚本读取文件并替换另一个文件中的字符串?
How to read a file and replace a string in another file using shell script in linux?
我正在尝试从文本文件中读取密钥的值。阅读后,我想将这个值与一些字符串连接起来,并在另一个文件中替换该行。请找到以下代码
source.txt file
USERNAME='cffde308-a1f8-436f-9750-619856e70b88'
PASSWORD='XEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0='
target.js 文件
auth: {
username: 'zfgde308-a1f8-436f-9750-619856e70b89',
password: 'ZEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0=',
},
我想从源文件中复制用户名和密码并将其替换到配置文件中。我尝试了下面的代码
#! /bin/sh
source "/opt/source/source.txt"
USER="username: '$USERNAME',"
PWD="password: '$PASSWORD',"
echo $USER
echo $PWD
sed '/username/c$USER' target.js
sed '/password/c$PWD' target.js
我得到的结果是
[l21m23 source]$ ./ClientDetailsSetup.sh
',ername: 'cffde308-a1f8-436f-9750-619856e70b88
password: 'XEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0=',
auth: {
username: 'zfgde308-a1f8-436f-9750-619856e70b89',
$PWD
},
如果能尽早解决这个问题会有很大的帮助
#!/bin/sh
source "/opt/source/source.txt"
USERN="username: '$USERNAME',"
PWD="password: '$PASSWORD',"
echo $USERN
echo $PWD
sed -i "s/username:.*/$USERN/" target.js
sed -i "s/password:.*/$PWD/" target.js
有几个问题:
USER
是保留的 shell 变量,所以你必须给它一个不同的名称
- 您的 sed 脚本需要
s/.../.../
来替换,您还需要匹配正则表达式中的其余行,因此需要 .*
或旧凭据仍在输出中
-i
就地编辑需要 sed 上的选项
- 在
'
分隔的字符串中不进行变量替换,所以这里改为"
我正在尝试从文本文件中读取密钥的值。阅读后,我想将这个值与一些字符串连接起来,并在另一个文件中替换该行。请找到以下代码
source.txt file
USERNAME='cffde308-a1f8-436f-9750-619856e70b88'
PASSWORD='XEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0='
target.js 文件
auth: {
username: 'zfgde308-a1f8-436f-9750-619856e70b89',
password: 'ZEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0=',
},
我想从源文件中复制用户名和密码并将其替换到配置文件中。我尝试了下面的代码
#! /bin/sh
source "/opt/source/source.txt"
USER="username: '$USERNAME',"
PWD="password: '$PASSWORD',"
echo $USER
echo $PWD
sed '/username/c$USER' target.js
sed '/password/c$PWD' target.js
我得到的结果是
[l21m23 source]$ ./ClientDetailsSetup.sh
',ername: 'cffde308-a1f8-436f-9750-619856e70b88
password: 'XEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0=',
auth: {
username: 'zfgde308-a1f8-436f-9750-619856e70b89',
$PWD
},
如果能尽早解决这个问题会有很大的帮助
#!/bin/sh
source "/opt/source/source.txt"
USERN="username: '$USERNAME',"
PWD="password: '$PASSWORD',"
echo $USERN
echo $PWD
sed -i "s/username:.*/$USERN/" target.js
sed -i "s/password:.*/$PWD/" target.js
有几个问题:
USER
是保留的 shell 变量,所以你必须给它一个不同的名称- 您的 sed 脚本需要
s/.../.../
来替换,您还需要匹配正则表达式中的其余行,因此需要.*
或旧凭据仍在输出中 -i
就地编辑需要 sed 上的选项- 在
'
分隔的字符串中不进行变量替换,所以这里改为"