Regex 更改匹配行中的单词
我尝试搜索和替换一个单词,但只在包含模式的行中搜索和替换。在我的例子中,它是一个/etc/fstab文件,我想将ro标志修改为rw,但只针对某些特定的共享 这就是我的NFS共享的外观:Regex 更改匹配行中的单词,regex,linux,unix,awk,sed,Regex,Linux,Unix,Awk,Sed,我尝试搜索和替换一个单词,但只在包含模式的行中搜索和替换。在我的例子中,它是一个/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:/
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:/path/to/share1/nfs/mount-nfs-rw,nosuid,soft,vers=3 0
但仅适用于特定的服务器和共享。我试过这个:
sed '/servername1.*share1 s/ro/rw' fstab
但它不起作用。那么为了实现我的目标,我应该使用哪个正则表达式呢
谢谢您可以使用此
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
这将修改servername1中的share1和share2,对吗?我只想从servername1而不是share2修改share1