Пакетная команда Windows, чтобы игнорировать некоторые строки файла? - PullRequest
0 голосов
/ 02 февраля 2012

Я перенаправляю вывод cvs diff в файл log.txt.

C:\Temp> cvs diff -b -B -r 1.5 -r 1.6 Project\src\Sample.java > log.txt

Генерируемое содержимое файла log.txt при выполнении вышеуказанной команды выглядит так:

Index: project/src/Sample.java
===================================================================
RCS file: \repobase/src/Sample.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -r1.5 -r1.6
78a79,82
>       public java.lang.Class getJavaClass() {
>           return Sample.class;
>       }
> 
92c96
<           return Demo.getparentClass(this.getClass());
---
>           return MyClass.clazz;

Все строки этого файла, начинающиеся с < или >, необязательны.Я хочу игнорировать все такие строки, чтобы вставить минимальный остаток в файл log.txt.Как я могу сделать это через командную строку Windows?

1 Ответ

1 голос
/ 02 февраля 2012

Возможно, опция cvs diff --brief даст вам то, что вы хотите.

Если нет, то вы можете передать вывод diff в FINDSDTR и позволить ему отфильтровать строки

cvs diff -b -B -r 1.5 -r 1.6 Project\src\Sample.java | findstr /vbl "< >" > log.txt
Параметр

/ v означает печать строк, которые не содержат строк

/ b опция означает совпадение строки поиска, начинающейся в начале каждой строки

/ l означает строку поиска букв (в отличие от регулярного выражения)

Строка поиска разбивается на каждый пробел, поэтому «<>» - это действительно две строки поиска.

Для получения дополнительной информации о FINDSTR используйте `FINDSTR /? '.

Для получения дополнительной справки см. Каковы недокументированные функции и ограничения команды Windows FINDSTR?

...