У меня есть файл build.gradle. Мне нужно найти строку android {, и если она найдена; в следующей строке он должен отображать некоторое содержимое как echo "signing config={..SOME CODE.....} > build.gradle. Это возможно. Используя приведенный выше код, я мог выводить код из командной строки только в начале или в конце. Пожалуйста, помогите мне.

РЕДАКТИРОВАТЬ:

Пример ... Мой файл gradle выглядит как

buildscript {
CODE
}

dependencies {
    CODE
}
}
apply plugin: 'com.android.application`

android {

defaultConfig {
    CODE
}
}

Здесь при обнаружении android { как строки следует изменить следующее после android {, как показано ниже

buildscript {
CODE
}

dependencies {
    CODE
}
}
apply plugin: 'com.android.application`

android {

 **HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**
defaultConfig {
    CODE
}
}
0
Nevin Raj Victor 2 Мар 2015 в 14:41

2 ответа

Лучший ответ

А как насчет простого awk?

awk '/^android/{print;print "**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**";next}1' build.gradle

'1' в конце может быть немного загадочной, более подробной версией:

awk '/^android/{print;print "**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**";next}{print $0}' build.gradle

Замена на месте:

{ rm build.gradle && awk '/^android/{print;print "**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**";next}{print $0}' > build.gradle ; } < build.gradle
1
wisent 4 Мар 2015 в 08:52

Вызов sed -i для редактирования на месте сделает то, что вы хотите:

sed -i 's/android {/android {\n**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**/'

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

0
David C. Rankin 2 Мар 2015 в 12:55