2014-09-25 2 views
0

У меня есть патч для применения на устаревшей кодовой базе. Существует много файлов с именем pom.xml, изменения которых должны быть пропущены. Как удалить их из патча?Удалить определенные файлы из нелегального diff

sed '/^diff --git .*pom.xml$/,/^diff --git/d' 

удаляет одну дополнительную линию в конце (которая не предназначена для дальнейшей обработки).

Возможно, мне нужно решение для удаления строк между двумя шаблонами, включая первый шаблон и исключающий второй. Я ограничен MSYS, поэтому доступны только команды Windows, sed и mawk.

Вот пример ввода. Там три записи, второй - для удаления.

diff --git a/core/contexts/org.eclipse.rcptt.ctx.debug/META-INF/MANIFEST.MF b/core/contexts/org.eclipse.rcptt.ctx.debug/META-INF/MANIFEST.MF 
index a02c3f0..b74197f 100644 
--- a/core/contexts/org.eclipse.rcptt.ctx.debug/META-INF/MANIFEST.MF 
+++ b/core/contexts/org.eclipse.rcptt.ctx.debug/META-INF/MANIFEST.MF 
@@ -2,13 +2,13 @@ Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Q7 Debug 
Bundle-SymbolicName: org.eclipse.rcptt.ctx.debug;singleton:=true 
-Bundle-Version: 1.5.0.qualifier 
+Bundle-Version: 1.5.3.qualifier 
Bundle-ClassPath: . 
Bundle-Vendor: Eclipse RCP Testing Tool Project 
Bundle-Localization: plugin 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Require-Bundle: org.eclipse.core.runtime, 
- org.eclipse.rcptt.core;bundle-version="[1.5.0,1.6.0)";visibility:=reexport 
+ org.eclipse.rcptt.core;bundle-version="[1.5.3,1.6.0)";visibility:=reexport 
Bundle-ActivationPolicy: lazy 
Export-Package: org.eclipse.rcptt.debug, 
    org.eclipse.rcptt.debug.impl, 
diff --git a/core/contexts/org.eclipse.rcptt.ctx.debug/pom.xml b/core/contexts/org.eclipse.rcptt.ctx.debug/pom.xml 
index e12f814..e18b46a 100644 
--- a/core/contexts/org.eclipse.rcptt.ctx.debug/pom.xml 
+++ b/core/contexts/org.eclipse.rcptt.ctx.debug/pom.xml 
@@ -4,10 +4,10 @@ 
    <parent> 
    <artifactId>rcptt.core.contexts</artifactId> 
    <groupId>org.eclipse.rcptt</groupId> 
- <version>1.5.0-SNAPSHOT</version> 
+ <version>1.5.3-SNAPSHOT</version> 
    </parent> 
    <groupId>org.eclipse.rcptt</groupId> 
    <artifactId>org.eclipse.rcptt.ctx.debug</artifactId> 
- <version>1.5.0-SNAPSHOT</version> 
+ <version>1.5.3-SNAPSHOT</version> 
    <packaging>eclipse-plugin</packaging> 
</project> 
diff --git a/core/contexts/org.eclipse.rcptt.ctx.extensions/META-INF/MANIFEST.MF b/core/contexts/org.eclipse.rcptt.ctx.extensions/META-INF/MANIFEST.MF 
index 88ccb8b..b8c1308 100644 
--- a/core/contexts/org.eclipse.rcptt.ctx.extensions/META-INF/MANIFEST.MF 
+++ b/core/contexts/org.eclipse.rcptt.ctx.extensions/META-INF/MANIFEST.MF 
@@ -2,7 +2,7 @@ Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Q7 Context Extensions 
Bundle-SymbolicName: org.eclipse.rcptt.ctx.extensions;singleton:=true 
-Bundle-Version: 1.5.0.qualifier 
+Bundle-Version: 1.5.3.qualifier 
Bundle-Activator: org.eclipse.rcptt.ctx.extensions.ContextExtensionsPlugin 
Bundle-Vendor: Eclipse RCP Testing Tool Project 
Require-Bundle: org.eclipse.core.runtime, 

Все решения, которые я нашел, либо удаляют как стартовые, так и завершающие линии с узорами или ни один из них.

+0

Тестирование [потенциальное решение] (http://www.unix.com/shell-programming-and-scripting/89484-delete-lines-between-two-patterns-without-deleting-second-pattern.html) ' sed '/ FROM_HERE /,/TO_HERE/{// p; d;}' ' – Basilevs

ответ

1

Наконец, рабочий раствор:

awk ' 
    /^diff --git/ {skip = 0} 
    /^diff --git .*pom.xml$/ { skip = 1} 
    {if (!skip) print $0} 
' 

Это была не работа СЕПГ, наверное.

Смежные вопросы