Given the following configuration file:
shape {
visible: true
type: rectangle
...
}
shape {
type: circle
visible: isRound === "true"
...
}
shape {
// comment: "visible" not set, default "true"
}
How to set using bash all the values for visible key (property) to false, without touching the comments, but keeping the old value as a comment?
The new content should be:
shape {
visible: false
type: rectangle
...
}
shape {
type: circle
visible: false // visible: isRound === "true"
// ideally, above, the old value is kept as a comment...
...
}
shape {
visible: false
// comment: "visible" not set, default "true"
}
The file is not just a list of shape structures, may contain other entries too. This should be QML compliant.
awk shows:
awk --version
GNU Awk 5.2.1, API 3.2
Copyright (C) 1989, 1991-2022 Free Software Foundation.
Edit
I think I can use this PCRE regex:
(\s*shape\s*\{\n)(\s*)(.*?)(visible\:.*\n?)?(.*?)(\n\s*\})
with replace expression as:
$1$2visible: false // $4\n$2$5$6
or
\1\2visible: false // \4\n\2\5\6
but I need a tool to apply it. It is not perfect, still needs to not comment twice.
//and/* */CSS. If then, add the proper tag by editing your post.