我正在尝试将某些行从一个 .txt 文件移动到另一个。这些线条都遵循一定的模式。我一直在研究在批处理文件中使用 find 命令,但这不会从原始文件中删除该行。
例如:
find \i pattern "d:\example1.txt" >> "d:\example2.txt"
有什么办法可以做到这一点?
提前致谢。
我正在尝试将某些行从一个 .txt 文件移动到另一个。这些线条都遵循一定的模式。我一直在研究在批处理文件中使用 find 命令,但这不会从原始文件中删除该行。
例如:
find \i pattern "d:\example1.txt" >> "d:\example2.txt"
有什么办法可以做到这一点?
提前致谢。
使用findstr
您也可以打印不匹配的行。所以你可以分几个步骤来完成,伪编码如下:
findstr pattern input > output
findstr /v pattern input > input-inverse
move /y input-inverse input
这应该让您在输出中保留与模式匹配的所有行,以及没有这些行的输入。
编辑:最后一步使用带有覆盖选项的移动,因此无需删除之前的输入。我想我(主要是 Linux 人)认为“重命名”和“移动”是同一件事,并认为这种覆盖是理所当然的。所以,谢谢你的提醒。
如何创建两个文件,然后替换原始文件?
find \i pattern "d:\example1.txt" >> "d:\example2.txt"
find \i antipattern "d:\example1.txt" >> "d:\example3.txt"
del example1.txt
ren example3.txt example1.txt
从文件中删除行很难。通常,即使在真正的编程环境中,您也会在此处使用额外的文件。
这是一个稍微不同的实现:
ren example1.txt source.txt
find \i pattern "d:\source.txt" >> "d:\example2.txt"
find \i antipattern "d:\source.txt" >> "d:\example1.txt"
del source.txt