特定の行をある.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の人)は、「名前の変更」と「移動」を同じものと考えており、その上書きを当然のことと思っていたと思います。それでは、ヘッドアップに感謝します。
2つのファイルを作成してから、元のファイルを置き換えるのはどうですか?
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