Как удалить определенные строки из файла с помощью sed / awk или чего-то еще? - PullRequest
0 голосов
/ 14 марта 2011

У меня есть файл, который я извлекаю и отправляю в svn-репозиторий. Мне нужно удалить часть одного файла при извлечении из хранилища и добавить ту же часть, когда я нажимаю в хранилище. Это будет сделано 'git svn fetch' и 'git svn dcommit'. Связанный вопрос: Как настроить gitattributes для фильтрации части файла?

Мне нужен скрипт sed или awk, чтобы удалить и добавить это:

GlobalSection(SubversionScc) = preSolution
    Svn-Managed = True
    Manager = AnkhSVN - Subversion Support for Visual Studio
EndGlobalSection

Из этого:

Global
    GlobalSection(SubversionScc) = preSolution
        Svn-Managed = True
        Manager = AnkhSVN - Subversion Support for Visual Studio
    EndGlobalSection
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Debug|Mixed Platforms = Debug|Mixed Platforms
        Debug|x86 = Debug|x86
        Release|Any CPU = Release|Any CPU
        Release|Mixed Platforms = Release|Mixed Platforms
        Release|x86 = Release|x86
    EndGlobalSection
EndGlobal

EDIT: С помощью awk я могу сделать это, чтобы получить определенную часть файла

awk -v RS='GlobalSection' '/SubversionScc/ {print RS$0 RS} ' file

Как мне отменить это, чтобы получить все остальное, кроме этой части? И как мне добавить эту часть после

Global

или до

EndGlobal

в исходном файле?

1 Ответ

1 голос
/ 14 марта 2011

Используйте sed для извлечения определенного раздела.

$ sed -n -e '/GlobalSection(SubversionScc/,/EndGlobalSection/p' yourfilename > yoursvnsection
$ cat yoursvnsection
    GlobalSection(SubversionScc) = preSolution
        Svn-Managed = True
        Manager = AnkhSVN - Subversion Support for Visual Studio
    EndGlobalSection

И используйте sed, чтобы прочитать этот файл обратно.

$ sed '/^Global$/ r yoursvnsection ' < yourfilename
Global
    GlobalSection(SubversionScc) = preSolution
        Svn-Managed = True
        Manager = AnkhSVN - Subversion Support for Visual Studio
    EndGlobalSection
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Debug|Mixed Platforms = Debug|Mixed Platforms
        Debug|x86 = Debug|x86
        Release|Any CPU = Release|Any CPU
        Release|Mixed Platforms = Release|Mixed Platforms
        Release|x86 = Release|x86
    EndGlobalSection
EndGlobal
...