Переместить строки из одного файла .txt в другой - PullRequest
0 голосов
/ 20 февраля 2009

Я пытаюсь переместить определенные строки из одного файла .txt в другой. Все эти линии следуют определенной схеме. Я пытался использовать команду find в командном файле, но это не удаляет строку из исходного файла.

Например:

find \i pattern "d:\example1.txt" >> "d:\example2.txt"

Есть ли способ добиться этого?

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 20 февраля 2009

Используя findstr, вы можете печатать строки, которые не тоже совпадают. Таким образом, вы можете сделать это в несколько шагов, псевдокодировано так:

  • findstr pattern input > output
  • findstr /v pattern input > input-inverse
  • move /y input-inverse input

Это должно оставить вас со всеми строками, совпадающими с шаблоном в выводе, и вводом без этих строк.

РЕДАКТИРОВАТЬ: сделал последний шаг использовать переместить с возможностью перезаписи, поэтому нет необходимости удалять ввод перед этим. Я полагаю, что я (в основном человек из Linux) думаю о «переименовании» и «перемещении» как об одном и том же, и воспринял это как должное. Итак, спасибо за хедз-ап.

4 голосов
/ 20 февраля 2009

Если вы можете использовать внешние программы, одним из способов будет использование awk или sed .

Пример Awk:

awk /pattern/ { print } 

Пример Sed:

sed '/inverse_pattern/ d' //Deletes lines which do not match
2 голосов
/ 20 февраля 2009

Как насчет создания двух файлов с последующей заменой оригинала?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...