我使用.txt文件作为数据库,如下所示:
is-program-installed= 0
is-program2-installed= 1
is-script3-runnig= 0
is-var5-declared= 1
但是如果我卸载程序2并且我想将其数据库值设置为“0”怎么办?
答案 0 :(得分:2)
使用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
答案 1 :(得分:2)
您可以在函数中包含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
并创建副本。