最近写一些Debian包安装脚本。由于希望安装时能提示用户输入一些初始配置参数,用sed倒来倒去,终于弄出来。
sed功能强大,但参数繁多,一天不用就忘。还是找个地方记下来,一来给大家分享,二来这里比记在本子上强。
一个典型的例子是,在配置文件中修改一个子网IP。在这个配置文件中,本人定义的子网IP格式是 网段IP加掩码位数:
如 192.168.10.4/26
还有一个进一步的例子,就是在参数是多个值用分号(;)隔开的,需要遍历每个值做事情。下面就是对类似storage_root=/path1;path2;/path3;/path4 进行文件遍历检查文件完整性。
分两步,一是取出参数“/path1;path2;/path3;/path4”,二是将分号替换成空格,然后用for循环:
另外一个困扰我很久的问题是分割符转义。好比上面的例子,如果要将带有“/“的字符串替换到文件中,总是出错。比如:
将 storage_root=/path1;/path2;/path3;/path4 替换到文件中的 storage_root 的设置。
后来经高人提醒,原来sed可以使用其他分割符号的,如下面的命令,就轻松搞定了: