使用sed

时间:2016-03-15 00:07:43

标签: ssh sed escaping aix

我想编辑几个AIX主机的/ etc / filesystems。我想替换所有行:

/usr/sap/interfaces:
dev             = /my_mount/mnt

usr/sap/interfaces:
dev             = "/my_mount/mnt"

到目前为止我试过了:

sed 's/^dev/\/my_mount\/mnt/"\/my_mount\/mnt"/' 

但它没有用。我尝试使用ssh远程执行此操作,因此我使用如下命令:

ssh username@servername 'sed \'s/^dev/\/my_mount\/mnt/"\/my_mount\/mnt"/' '

那么这样做的正确方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您要做的第一件事是更改您在<form action="send.php" method="POST"> <input type="number" onkeyup="checkField(this)"/> </form>中使用的分隔符,因为您正在尝试匹配包含大量斜杠的内容。

你要做的第二件事是更改传递给ssh的命令中使用的引用,这次是因为sed喜欢撇号。这使事情更容易阅读。

那应该给你一个像这样的命令:

sed

如果这会产生您想要的输出,那么您可以使用ssh username@servername "sed '/^dev/s#\(/my_mount/mnt\)#\"\1\"#' /usr/sap/interfaces" arg:

将其更改为实际编辑文件
-i

请注意,此时您很可能会收到类似ssh username@servername "sed -i '/^dev/s#\(/my_mount/mnt\)#\"\1\"#' /usr/sap/interfaces" 的错误,因为您的普通用户帐户无法编写内联编辑所需的临时文件。如果发生这种情况,您需要在命令中添加sed: couldn't open temporary file /usr/sap/sedEYALyx: Permission denied