0

我有一个要通过 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] 开头的块中添加给定的地址,恰好在该块的允许部分中。我希望我听起来足够清楚。

有任何想法吗?

4

3 回答 3

4
ssh user@host sed -i '/allowed =/s/$/ 10.10.10.9/' /path/to/file
于 2012-04-17T21:27:04.213 回答
2

您也可以使用编辑器:

 echo -e "/10.10.10.1\ns/\$/ 10.10.10.9\nx\n" | ex file_to_change
于 2012-04-17T21:28:44.830 回答
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'
于 2012-04-17T21:07:56.593 回答