Использование gawk
для захвата скобок:
printf "%s\n" "v1 = true" "v2=false" |
gawk '
match($0, /([[:alnum:]]+)[[:space:]]*=[[:space:]]*(true|false)/, ary) {
printf("%s = %s\n", ary[1], ary[2] == "true" ? "false" : "true")
}
'
Производит
v1 = false
v2 = true
Чтобы записать в то же имя файла, используйте что-то вроде этого:
filename=./variables1
tmpfile=$(mktemp) # or use tmpfile="$filename.tmp.$(date +%s).$$"
gawk '...' "$filename" > "$tmpfile" &&
mv "$filename" "$filename"~ &&
mv "$tmpfile" "$filename"
Удалите первый mv
, если вы не хотите делать резервную копию файла.