我有一个配置文件我想通过ssh编辑,需要一个智能命令(或命令)来替换它中的一些文本。文件是这样的:
[vol1]
path = /folder
allowed = 10.10.10.1
public=yes
我需要修改允许的部分,正好添加一些IP的空白分隔符,如下所示:
[vol1]
path = /folder
allowed = 10.10.10.1 10.10.10.9
public=yes
尝试使用 sed bash函数,但我无法按照我的意愿使其工作,就像我认为它是小菜一碟一样。 只是另一个信息,在配置文件中有很多这样的文本块。 IP地址不是来自sam池,派生或类似于(可能非常不同)并且已经检查了IP地址格式,因此不需要这样做。 我的信息是,我必须在[vol1]开头的chunk中附加给定地址,正好在该块的允许部分中。 我希望我听起来很清楚。
有什么想法吗?
答案 0 :(得分:4)
ssh user@host sed -i '/allowed =/s/$/ 10.10.10.9/' /path/to/file
答案 1 :(得分:2)
在sed
中执行此操作应该可以解决问题:
cat /path/to/file.txt | sed 's/10.10.10.1/& &/g'
匹配任何IP:
cat /path/to/file.txt | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/& &/g'
如果要更改分隔符,只需编辑sed
命令的右操作数,并添加所需的分隔符。例如,使用选项卡:
cat /path/to/file.txt | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/&\t&/g'
答案 2 :(得分:2)
您也可以使用编辑器:
echo -e "/10.10.10.1\ns/\$/ 10.10.10.9\nx\n" | ex file_to_change