2016-03-15 23 views
0

我想編輯幾個AIX主機的/ etc/filesystems。我想替換所有行:ssh和編輯遠程/ etc/filesystems與sed

/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 [email protected] 'sed \'s/^dev/\/my_mount\/mnt/"\/my_mount\/mnt"/' ' 

那麼,什麼是做這個正確的方式?

在此先感謝。

+1

'sed'/^dev/s @ \(/ my_mount/mnt \)@「\ 1」@'' –

回答

1

您想要做的第一件事是更改您在sed中使用的分隔符,因爲您試圖匹配包含大量斜線的內容。

你想要做的第二件事是改變傳遞給ssh的命令中使用的引用,這次是因爲sed喜歡撇號。這使得事情更容易閱讀。

這應該離開你的命令是這樣的:

ssh [email protected] "sed '/^dev/s#\(/my_mount/mnt\)#\"\1\"#' /usr/sap/interfaces" 

如果產生你想要的輸出,那麼你可以改變它利用-i ARG實際編輯文件,:

ssh [email protected] "sed -i '/^dev/s#\(/my_mount/mnt\)#\"\1\"#' /usr/sap/interfaces" 

請注意,在這一點上,您很可能會遇到像sed: couldn't open temporary file /usr/sap/sedEYALyx: Permission denied這樣的錯誤,因爲您的普通用戶帳戶無法寫入內聯編輯所需的臨時文件。如果發生這種情況,您需要將sudo添加到命令中。