我需要一些批处理脚本的帮助。
在文件中查找字符串并删除该行的剩余部分。
示例:
This is my string before running the script.
在“之前找到字符串”并删除'直到行尾。
输出:
This is my string.
提前致谢。
答案 0 :(得分:2)
标记字符串有帮助。这里的问题是,分隔符只是一个字符,而不是单词。所以你必须先替换它 - 例如 - §
:
set "string=This is my string before running the script."
for /f "delims=§" %%i in ("%string: before =§%") do echo %%i.
答案 1 :(得分:1)
sed
命令是你的朋友。
sed s/before.*//
这将仅修改字符串“before”的行,并且对于那些行,删除字符串“before”以及其后的所有内容,直到行尾。如果要进行适当的编辑,请阅读有关如何使用-i
开关的手册页。
答案 2 :(得分:1)
使用REPL.BAT - A hybrid JScript/Batch utility执行正则表达式搜索并在stdin上替换并将结果写入stdout非常简单。它是纯脚本,可以在任何现代Windows机器上运行,从XP开始。
type file.txt | repl (before).* $1 >file.txt.new
move /y file.txt.new file.txt
答案 3 :(得分:0)
使用sed
:
This is my string bere running the script
This is my string before running the script
This is my string befo running the script
This is my string before running the script
使用单个正则表达式(之前匹配以及之后的所有内容并且无需替换)
$ sed 's/before.*//' a
This is my string bere running the script
This is my string
This is my string befo running the script
This is my string
但也许你想要像
这样的东西 sed 's/\ *before.*/\./' a
This is my string bere running the script
This is my string.
This is my string befo running the script
This is my string.
删除单词之前的最终空格并添加一个点。