提问人:Judy 提问时间:9/1/2023 更新时间:9/1/2023 访问量:67
python + 在 python 中运行 sed 命令
python + run sed command in python
问:
我创建了 python3 模块文件 ( ) ,其中包括将旧字符串替换为 new 的 Linux 命令,例如 - 键 - 和值)sed_util_conf.py
sed
http-server.https.port
def run_cli(action_details, command_to_run):
print(action_details)
print(command_to_run)
errCode = os.system(command_to_run)
if errCode != 0:
print('failed, ' + command_to_run)
sys.exit(-1)
print(action_details + ' - action done')
def replace_line_do(File, OLD, NEW):
.
.
.
run_cli('run_sed_cli', f'sed -ie s/^{OLD}/{NEW}/ {File}')
在其他 python3 脚本上,我使用了以下 python3 语法,以便将“”替换为新的”OLD
NEW
"
sed_util_conf.replace_line_do(f'{file_path}', 'http-server.https.port=.*', f'http-server.https.port={val}')
例:
sed_util_conf.replace_line_do(f'/etc/zomer_app/conf/config.zomer', 'http-server.https.port=.*', f'http-server.https.port={val}')
脚本正在工作,并在文件中用 NEW 字符串更改了 OLD 字符串,但另外我们得到了另一个以”e
"
例如
如果我们替换了文件上的行 -/etc/zomer_app/conf/config.zomer
然后我们得到两个文件
/etc/zomer_app/conf/config.zomer
/etc/zomer_app/conf/config.zomere
原因是 syntx 中的“”字符——e
run_cli('sed', f'sed -ie s/^{OLD}/{NEW}/ {File}')
从 SED 手册页 “” 表示”e
e script, --expression=script , add the script to the commands to be executed
"
但我不明白这个“”是如何创建附加文件的 - ?e
sed
/etc/zomer_app/conf/config.zomere
答:
1赞
pygri
9/1/2023
#1
您应该将 替换为 。-ie
-i -e
不能一个接一个地堆叠选项。
评论
0赞
Judy
9/1/2023
好的,但仍然不明白为什么我们有以“e”结尾的额外文件,顺便说一句,正如我们有时看到的那样,文件是空的
1赞
pygri
9/1/2023
好吧,由 sed 来解释您的命令行参数 - 我只会修复语法,而不用担心它如何处理用户输入中的边缘情况......
0赞
stevesliva
9/1/2023
-ie
应该与 GNU sed 一起使用。这是在 Mac 上运行的吗?另一个选项可能是显式使用 .基于其他 mac 问题。gsed
0赞
Judy
9/3/2023
我们在 RHEL 7.9 版本上运行 python 脚本
评论
e
-i
e
e