包含此内容的文件:
var1 = true
如何使用sed / awk切换此值?
我查看了群组,sed地址..但是它没有说明如何保存像“找到它”或“找不到它”这样的返回值。
搜索将var1 = true
替换为var1 = false
编辑:似乎没有写入文件..ever:
sed 's/var1 = true/var1 = foo/g' ./variables1
sed 's/var1 = false/var1 = true/g' ./variables1
sed 's/var1 = foo/var1 = false/g' ./variables1
命令行输出:
var1 = foo
var1 = true
var1 = true
怪异
edit2 :它与sed -i一起用于就地编辑
答案 0 :(得分:1)
sed 's/var1 = true/var1 = false/g'
答案 1 :(得分:1)
使用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
。