我有包含复杂文本的文件
print("ERROR: passwords don't match")
password = hash_func(password.encode("UTF-8")).hexdigest()
我需要在它们之间插入这段文字
with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
login_log.write('%s\n%s\n' % (username, password))
所以会是这样的
else:
print("ERROR: passwords don't match")
with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
login_log.write('%s\n%s\n' % (username, password))
password = hash_func(password.encode("UTF-8")).hexdigest()
答案1
cat > user.inp << EOL
with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
login_log.write('%s\n%s\n' % (username, password))
EOL
sed -i '/ERROR: passwords/r user.inp' /root/add.py
fi
答案2
你可以这样做vi
:
vi -c '/print("ERROR: passwords don'\''t match")/a\
with open('\''/etc/openvpn/clients/%s/login.txt'\'' % username, '\''w'\'') as login_log:
login_log.write('\''%s\n%s\n'\'' % (username, password))
.' myfile
(这都是一个命令。)
这将使您打开文件vi
并进行修改,但文件不会保存。你可以看看它是否是你想要的方式。
要退出并保存更改,请键入:x
并按 Enter 键。要退出并放弃更改,请键入:q!
并按 Enter 键。
如有问题,请按<Esc>
一两次,然后重试:q!
。
对脚本编辑的引用可能会很快变得非常糟糕。我建议您学习使用vi
和打开文件以交互方式编辑它;这比弄清楚上面命令中的引用要容易得多。
容易得多,如果您已经将这些行包含在一个文件中,并且想要将它们插入到另一个文件中的特定位置,那么您可以调整一些ex
我已经写过的代码就是这样做。