awk - 将花括号块放入 gradle 文件
问题描述
我有一个 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 片段中(在 jenkins 中执行 shell)
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')
}
}
}
推荐阅读
- android - 如何在android自定义视图中两根手指触摸之前忽略单点触摸动作?
- amazon-web-services - CloudFormation 响应对象超时
- docusignapi - 使用 SAML / AD 的 DocuSign SSO 身份验证
- amazon-web-services - 将非 ascii 内容写入 S3 的问题
- python - 使用 Adwords API 将自定义受众添加到广告组
- python - Pandas:带有数量和误差的简单时间序列
- selenium - 如何为所有窗口允许 profile.default_content_setting_values.media_stream_camera
- caching - 导致内存泄漏的插件
- java - 如何在方法中传递枚举参数
- ios - 将焦点从一个视图控制器转移到另一个视图控制器(以模态方式呈现),反之亦然