我使用 .txt 文件作为数据库,如下所示:
is-program-installed= 0
is-program2-installed= 1
is-script3-runnig= 0
is-var5-declared= 1
但是如果我卸载程序 2 并且我想将其数据库值设置为“0”怎么办?
一种使用方法sed
:
sed -e '/is-program2-/ s/.$/0/' -i file.txt
它是这样工作的:
s/.$/0/
0 替换最后一个字符:点匹配任何字符,$ 匹配行尾——因此.$
是该行的最后一个字符。/is-program2-/
是一个过滤器,因此仅对匹配的行执行替换。我使用的过滤器模式有点懒惰:它很短但不准确。更长、更严格的解决方案是:
sed -e '/^is-program2-installed= / s/.$/0/' -i file.txt
您可以将sed
命令(请参阅@janos 的答案)包装在函数中以方便使用:
定义:
function markuninstalled () {
PROGRAM=${1?Usage: markuninstalled PROGRAM [FILE]}
FILE=${2:-file.txt}
sed -e "/^is-$PROGRAM-/ s/.$/0/" -i.bak $FILE
}
然后,像这样使用它:
markuninstalled program2
它将修改默认文件file.txt
并创建一个副本。