将大括号块放置到渐变文件中



我有一个build.gradle文件的片段,如下所示:

android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.softtech.myApp"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
}
}
}

我需要将以下块放入上面的gradle片段(在jenkinsexecuteshell中(

myConfig{
debug{
myFile = file("/Users/john/a/b/c/d/x.file")
}
}

如下所示:

android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.softtech.myApp"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
*myConfig{
debug{
myFile = file("/Users/user1/a/b/c/d/x.file")
}
}*
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
}
}
}

我已经很长时间没有使用高级AWK了,我很感激你的帮助,无论是AWK、sed还是perl

尝试使用RS作为"}"\nbuild";和打印字段,但不起作用

感谢

$ cat tst.sh
#!/usr/bin/env bash
awk '
NR==FNR { rec = (NR>2 ? rec ORS : "") $0; next }
$1 == "buildTypes" {
indent = $0
sub(/[^[:space:]].*/,"",indent)
gsub(/n/,"&"indent,rec)
print indent rec
}
{ print }
' <( printf '
myConfig{
debug{
myFile = file("/Users/john/a/b/c/d/x.file")
}
}
' ) "$1"

$ ./tst.sh file.gradle
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.softtech.myApp"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
myConfig{
debug{
myFile = file("/Users/john/a/b/c/d/x.file")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
}
}
}

您可以使用GNU-sed:

创建一个名为replace.txt的文本文件,具有适当的间距

myConfig{
debug{
myFile = file("/Users/john/a/b/c/d/x.file")
}
}

使用sed插入上面的文本";buildTypes";

sed -i "/buildTypes/e cat replace.txt" file.txt

(以后,请包括您自己尝试解决问题的代码(

最新更新