首页 > 解决方案 > 如何将新的文本字符串插入现有文本文件中的特定位置

问题描述

我需要将以下单行插入到许多计算机上的现有文本文件中。因此,我需要在批处理文件中自动执行此操作。

要添加的行:

<.add key="StudentAccountPaymentRunEnvironment" value="PRODUCTION"/>

该字符串的目标位于一个名为: 的文件中,O2-config.txt在该O2-config.txt文件中,我需要在下面显示的行之后插入上面显示的行:

<.add key="TuitionPaymentRunEnvironment" value="PRODUCTION"/.>

所以最终的结果将是:

现存的

<.add key="TuitionPaymentRunEnvironment" value="PRODUCTION"/> 

新的

<.add key="StudentAccountPaymentRunEnvironment" value="PRODUCTION"/>

在这两行之前和之后有很多行文本。请指教。我搜索并找到了 的解决方案linux,但没有找到Windows/Command Prompt. 我想将此解决方案放在.bat可以使用 Windows 组策略执行的文件中。

标签: windowsbatch-filewindows-10

解决方案


您可以从此站点获得 sed 的 Windows 端口。

使用它,您可以执行以下命令:

sed -i "s/<.add key=.TuitionPaymentRunEnvironment. value=.PRODUCTION.\/>/&\n<.add key=\"StudentAccountPaymentRunEnvironment\" value=\"PRODUCTION\"\/>/" somefile.txt

之后,需要修复行尾:

sed -i ":a;N;$!ba;s/\n/\r\n/g" somefile.txt

请注意,我假设您的文件中只有一个该文本的实例。

对于仅修改该字符串的第一个匹配项的解决方案,您可以将其放入批处理文件中:

set MATCH=.add key=.TuitionPaymentRunEnvironment. value=.PRODUCTION.
sed "0,/%MATCH%/ {s/%MATCH%\/>/&\n<.add key=\"StudentAccountPaymentRunEnvironment\" value=\"PRODUCTION\"\/>/}" somefile.txt > temp.txt
sed ":a;N;$!ba;s/\n/\r\n/g" temp.txt > somefile.txt
del temp.txt

推荐阅读