我试图将某个.txt文件中的某些行移动到另一个.txt文件中。这些线都遵循一定的模式。我一直在寻找在批处理文件中使用find命令,但这并不会从原始文件中删除该行。将行从一个.txt文件移动到另一个
例如:
find \i pattern "d:\example1.txt" >> "d:\example2.txt"
有什么办法来实现这一目标?
在此先感谢。
我试图将某个.txt文件中的某些行移动到另一个.txt文件中。这些线都遵循一定的模式。我一直在寻找在批处理文件中使用find命令,但这并不会从原始文件中删除该行。将行从一个.txt文件移动到另一个
例如:
find \i pattern "d:\example1.txt" >> "d:\example2.txt"
有什么办法来实现这一目标?
在此先感谢。
使用findstr
你可以打印不匹配行了。所以,你可以在几个步骤做到这一点,psudocoded这样的:
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
对不起作为一个完全的学究,但theres其中删除 “输入” 文件(1 BTW)2和3之间的台阶 – 2009-02-20 13:10:53
@Binary Worrier:实际上,在unix系统上,使用“mv”进行重命名,如果您在另一个现有文件的顶部“mv”现有文件,目标会自动替换,不需要删除。 – 2009-02-20 13:16:46