I have a file with this text in:
{{- if .Values.cxvxcxcvxcvx -}}
{{- if .Values.xcvxcvcxv.enabled }}
---
apiVersion: xx
kind: xcvxcv
metadata:
name: xxxxxxxxxxxx
namespace: xxxxxxxx
type: zxczxc
stringData:
app-sql-host: gdsfgdfgdfg.dfgdfgdfgdg.zxczxczcc.xcvx.zxczxczc.com
app-sql-database: xxxxxxxxxxxxxxxx
app-sql-password: xxxxxxxxxxxxxxxx
xx-sql-zxczx: xxxxxxxx
xx-sql-zxczxc: xxxxxxxx
sql-use-xx-user: 'no'
app-sql-username: xxxxxxxx
{{- end }}
{{- if .Values.xcvxcv.enabled }}
---
apiVersion: xx
kind: xcvxcv
metadata:
name: xxxxxxxxxxxx
namespace: xxxxxxxx
type: xcv
stringData:
xxx-url: xcvc:xcv://xxxxxxxxxxxxxxxxxxxxxxxxxxxx;
username: xxxx
password: xxxx
{{- end }}
{{- end -}}
Here is the pseudo-code/steps I need to perform:
---
and {
.---
and {
.---
and {
where it came from.Expected output:
{{- if .Values.cxvxcxcvxcvx -}}
{{- if .Values.xcvxcvcxv.enabled }}
---
apiVersion: xx
kind: xcvxcv
metadata:
name: xxxxxxxxxxxx
namespace: xxxxxxxx
type: zxczxc
encryptedData:
app-sql-host: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
app-sql-database: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
app-sql-password: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
xx-sql-zxczx: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
xx-sql-zxczxc: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
sql-use-xx-user: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
app-sql-username: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
{{- end }}
{{- if .Values.xcvxcv.enabled }}
---
apiVersion: xx
kind: xcvxcv
metadata:
name: xxxxxxxxxxxx
namespace: xxxxxxxx
type: xcv
encryptedData:
xxx-url: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
username: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
password: W8l4BFOTOzg4PDjjVVS7jrjhNy0WEcSjkWY0r93SK54cM1KM77bzSxAiNfwDW9liom8nESqezUcmX3V8A2IFMQJufNkOLUsUHAVPYWzAd0RqHhRHD6x2RkOsasGr46Jm3p14Dcz6oDYzETtwUhMJCVfAL7FXqqQWNOPXQyFhX7Oo05L7v34W4GGEDSwQo4ZqE9rJeYd4OXlsxkvfcIVqkZ5YsacczTXSsJWGdqPr3tsmplznaKZfkLqQgUzayXWdNI5H12FtBILqOr7TEdVEOVk2VkP7Nj4WZyrF00hbRhBi
template:
metadata:
annotations:
sealedsecrets.bitnami.com/<example-pathparameter>: "true"
{{- end }}
{{- end -}}
I think AWK is the best way to do this but I'm open to other Bash solutions. gawk
is not available to me.
I'm really not convinced you need your command to modify the temp file so here's a solution that will work with any awk that implements fflush()
(which is most of them and will be required by POSIX in the upcoming 2022 standards release, see https://www.austingroupbugs.net/view.php?id=634 for details) and uses a temp file (probably not necessary at all if you have GNU awk for co-processes) but assumes your command you run on it can print to stdout:
$ cat tst.awk
inBlock {
if ( /^{/ ) {
fflush()
close(tmp)
cmd = "cat -n \047" tmp "\047"
while ( (cmd | getline line) > 0 ) {
print line
}
close(cmd)
inBlock = 0
}
else {
print > tmp
}
}
!inBlock
/^---/ { inBlock = 1 }
$ tmp=$(mktemp) && awk -v tmp="$tmp" -f tst.awk file && rm -f "$tmp"
{{- if .Values.cxvxcxcvxcvx -}}
{{- if .Values.xcvxcvcxv.enabled }}
---
1 apiVersion: xx
2 kind: xcvxcv
3 metadata:
4 name: xxxxxxxxxxxx
5 namespace: xxxxxxxx
6 type: zxczxc
7 stringData:
8 app-sql-host: gdsfgdfgdfg.dfgdfgdfgdg.zxczxczcc.xcvx.zxczxczc.com
9 app-sql-database: xxxxxxxxxxxxxxxx
10 app-sql-password: xxxxxxxxxxxxxxxx
11 xx-sql-zxczx: xxxxxxxx
12 xx-sql-zxczxc: xxxxxxxx
13 sql-use-xx-user: 'no'
14 app-sql-username: xxxxxxxx
{{- end }}
{{- if .Values.xcvxcv.enabled }}
---
1 apiVersion: xx
2 kind: xcvxcv
3 metadata:
4 name: xxxxxxxxxxxx
5 namespace: xxxxxxxx
6 type: xcv
7 stringData:
8 xxx-url: xcvc:xcv://xxxxxxxxxxxxxxxxxxxxxxxxxxxx;
9 username: xxxx
10 password: xxxx
{{- end }}
{{- end -}}
Obviously replace cat -n
with whatever command you really want to run on the temp files.
EDIT: without using a temp file:
$ cat tst.awk
inBlock {
if ( /^{/ ) {
fflush()
cmd = "cat -n"
print buf | cmd
close(cmd)
buf = ""
inBlock = 0
}
else {
buf = (inBlock++ > 1 ? buf ORS : "") $0
}
}
!inBlock
/^---/ { inBlock = 1 }
$ awk -f tst.awk file
{{- if .Values.cxvxcxcvxcvx -}}
{{- if .Values.xcvxcvcxv.enabled }}
---
1 apiVersion: xx
2 kind: xcvxcv
3 metadata:
4 name: xxxxxxxxxxxx
5 namespace: xxxxxxxx
6 type: zxczxc
7 stringData:
8 app-sql-host: gdsfgdfgdfg.dfgdfgdfgdg.zxczxczcc.xcvx.zxczxczc.com
9 app-sql-database: xxxxxxxxxxxxxxxx
10 app-sql-password: xxxxxxxxxxxxxxxx
11 xx-sql-zxczx: xxxxxxxx
12 xx-sql-zxczxc: xxxxxxxx
13 sql-use-xx-user: 'no'
14 app-sql-username: xxxxxxxx
{{- end }}
{{- if .Values.xcvxcv.enabled }}
---
1 apiVersion: xx
2 kind: xcvxcv
3 metadata:
4 name: xxxxxxxxxxxx
5 namespace: xxxxxxxx
6 type: xcv
7 stringData:
8 xxx-url: xcvc:xcv://xxxxxxxxxxxxxxxxxxxxxxxxxxxx;
9 username: xxxx
10 password: xxxx
{{- end }}
{{- end -}}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.