1

我使用 .txt 文件作为数据库,如下所示:

is-program-installed= 0
is-program2-installed= 1
is-script3-runnig= 0
is-var5-declared= 1

但是如果我卸载程序 2 并且我想将其数据库值设置为“0”怎么办?

4

2 回答 2

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 
于 2013-11-10T20:25:51.333 回答
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并创建一个副本。

于 2013-11-10T20:39:08.783 回答