在特定字符串之后将文本添加到文件之间

时间:2015-03-02 11:41:18

标签: bash command-line awk echo

我有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
}
}

2 个答案:

答案 0 :(得分:1)

简单的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 :(得分:0)

sed -i对就地编辑的调用将执行您想要的操作:

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

您可以使用sed调用的其他几种变体来根据您的具体需求进行定制。