Обрезка путей из git diff приводит к получению Groovyscript

#git #grails #groovy

Вопрос:

Я пытаюсь обрезать пути из результата git diff. Вот что я попробовал :

 def ti = "git -C C:\PIE\src\repo diff --name-only".execute()
String directory =ti.text
File  file= new File(directory)

 def newlines = []
    file.toString().eachLine {String line ->
    if(line.contains("src")){

        line = line.replace("/src","")
    }
    newlines<<line

    }
    println newlines
    
 

Вывод из gif diff, например, выглядит так :

 a/b/c/src/ping.java
d/e/f/src/vim.java
g/h/j/src/key.java
 

Я хотел бы обрезать каждую строку в файле currentDir следующим образом :

 a/b/c
d/e/f
g/h/j
 

Комментарии:

1. Вы отредактировали свой вопрос, чтобы задать совершенно другой вопрос, который вы задавали изначально. Это очень сбивает с толку любого, кто столкнется с этим позже. Пожалуйста, задавайте новые вопросы как новые вопросы, а не перепрофилируйте старые.

2. да, буду иметь это в виду. Я был немного сбит с толку этим. Моя вина

3. Создание файла с git diff ошибкой будет, если у вас несколько различий в файлах. Если вы не используете экземпляр файла для чего-то другого, просто сделайте ti.text.eachLine {} это . При необходимости вы можете создать экземпляр файла. Или даже более крутой подход: ti.text.readLines().grep { it.contains("src") }.collect { it = it.replaceAll("/src", "") }

Ответ №1:

Если вы хотите удалить /src часть и все, что за ней следует, вы можете сделать это:

 line = line.replaceAll("/src.*","") 
 

вместо того, что у вас есть:

 line = line.replace("/src","")