2016-02-17 49 views
1

我尝试搜索并替换单词,但仅在包含模式的行中。对于我的情况,这是一个/ etc/fstab文件,我想修改ro标志为rw,但仅限于某些特定的共享。更改匹配行中的单词

这是我的NFS共享什么样子:

servername1:/path/to/share1 /nfs/mount1 nfs ro,nosuid,soft,vers=3 0 0 
servername2:/path/to/share1 /nfs/mount2 nfs ro,nosuid,soft,vers=3 0 0 
servername1:/path/to/share2 /nfs/mount3 nfs ro,nosuid,soft,vers=3 0 0 

我想这个更改为: servername1:/路径/到/为share1/NFS /挂载NFS RW,为nosuid,柔软,VERS = 3 0 0

但只限于特定的服务器和共享。我试过这个:

sed '/servername1.*share1 s/ro/rw' fstab 

但它没有奏效。那么我应该使用哪个正则表达式来实现我的目标?

感谢

回答

1

您可以使用此sed

sed '/^servername1.*share1/s/ro,/rw,/' fstab 

输出:

servername1:/path/to/share1 /nfs/mount1 nfs rw,nosuid,soft,vers=3 0 0 
servername2:/path/to/share1 /nfs/mount2 nfs ro,nosuid,soft,vers=3 0 0 
servername1:/path/to/share2 /nfs/mount3 nfs ro,nosuid,soft,vers=3 0 0 
+0

这将修改从servername1权既为share1和SHARE2?我只是想修改server1的share1而不是share2 – JavaRed

+0

啊对,现在试试我的更新回答,现在 – anubhava

+1

有效。谢谢 – JavaRed