我有一个类似于此的ini文件
ini
[test] foo=bar
字符串如果我们把这个ini文件命名为test1.ini如何将foo的值更改为foobarbaz,例如使用shell script。我已经尝试了以下方法,但它对我不起作用。我在ini文件中看不到更新的更改。我该如何编写它?
test1.ini
foo
foobarbaz
shell script
sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini
型你还有其他建议吗
0x6upsns1#
我个人使用了一个更详细的sed命令,因为相同的选项可能会出现在几个不同的部分:
sed
sh$ sed -i.bak '/^\[test]/,/^\[/{s/^foo[[:space:]]*=.*/foo = foobarbaz/}' test1.ini # ^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # make a in the right perform the substitution # *backup* section as you want
字符串作为一个安全网,我想补充一下:
sh$ diff test1.ini{,.bak} 2c2 < foo = foobarbaz --- > foo=bar
型
5ssjco0h2#
要更新文件,请使用sed的-i选项:
-i
sed -i "/^foo=/s/=.*/=foobarbaz/" test1.ini
字符串从man sed:-i[SUFFIX],--就地[=SUFFIX]就地编辑文件(如果提供SUFFIX,则进行备份)所以你也可以
man sed
sed -i.bak "/^foo=/s/=.*/=foobarbaz/" test1.ini
uqxowvwt3#
Crudini是.ini文件的命令行接口。
crudini --set test1.ini test foo foobarbaz
字符串或者,更一般地说,crudini--设置 * 文件名.INI* * 部分 * * 参数 * * 价值 *
crudini
crudini由Pádraig Brady于2013年编写,自从这个问题首次被提出以来,crudini已经成为UNIX工具包中的标准解决方案。许多GNU/Linux发行版将crudini预打包为操作系统的一部分,使安装变得简单(例如apt install crudini)。它也适用于Apple MacOS和Microsoft Windows。我过去也使用过自己定制的sed脚本,但crudini更简单,功能更强大,而且不太可能意外地破坏我的文件。请参阅crudini homepage以了解更多详细信息。
apt install crudini
虽然crudini对大多数人来说比sed更安全,但它并不完美。
-i~
crudini --set config.ini foo x=3
x=3 =
3条答案
按热度按时间0x6upsns1#
我个人使用了一个更详细的
sed
命令,因为相同的选项可能会出现在几个不同的部分:字符串
作为一个安全网,我想补充一下:
型
5ssjco0h2#
要更新文件,请使用sed的
-i
选项:字符串
从
man sed
:-i[SUFFIX],--就地[=SUFFIX]
就地编辑文件(如果提供SUFFIX,则进行备份)
所以你也可以
型
uqxowvwt3#
克鲁迪尼
Crudini是.ini文件的命令行接口。
溶液
字符串
或者,更一般地说,
crudini
--设置 * 文件名.INI* * 部分 * * 参数 * * 价值 *详细信息
crudini由Pádraig Brady于2013年编写,自从这个问题首次被提出以来,crudini已经成为UNIX工具包中的标准解决方案。许多GNU/Linux发行版将crudini预打包为操作系统的一部分,使安装变得简单(例如
apt install crudini
)。它也适用于Apple MacOS和Microsoft Windows。我过去也使用过自己定制的
sed
脚本,但crudini更简单,功能更强大,而且不太可能意外地破坏我的文件。请参阅crudini homepage以了解更多详细信息。
危险
虽然crudini对大多数人来说比
sed
更安全,但它并不完美。-i~
选项来在就地操作时自动创建备份文件。crudini --set config.ini foo x=3
将轻松地创建一行代码:x=3 =
。[据报道,这在最新版本中已得到修复。]