我正在尝试编写一个 bash 脚本,该脚本使用 sed 修改配置文件中不包含特定字符串的行。举例说明,我可以...
/some/file/path1 ipAddress1/subnetMask(rw,sync,no_root_squash)
/some/file/path2 ipAddress1/subnetMask(rw,sync,no_root_squash,anonuid=-1)
/some/file/path3 ipAddress2/subnetMask(rw,sync,no_root_squash,anonuid=0)
/some/file/path4 ipAddress2/subnetMask(rw,sync,no_root_squash,anongid=-1)
/some/file/path5 ipAddress2/subnetMask(rw,sync,no_root_squash,anonuid=-1,anongid=-1)
而且我希望更改每一行的括号列表,使其包含字符串anonuid=-1
并anongid=-1
在其括号内...
/some/file/path1 ipAddress1/subnetMask(rw,sync,no_root_squash,anonuid=-1,anongid=-1)
/some/file/path2 ipAddress1/subnetMask(rw,sync,no_root_squash,anonuid=-1,anongid=-1)
/some/file/path3 ipAddress2/subnetMask(rw,sync,no_root_squash,anonuid=-1,anongid=-1)
/some/file/path4 ipAddress2/subnetMask(rw,sync,no_root_squash,anongid=-1,anonuid=-1)
/some/file/path5 ipAddress2/subnetMask(rw,sync,no_root_squash,anonuid=-1,anongid=-1)
从示例中可以看出,括号中可能已经存在anonuid
和anongid
,但有可能原始括号列表有一个字符串而没有另一个字符串(第 2、3 和 4 行),列表都没有(第 1 行) ),列表都已正确设置(第 5 行),甚至其中一个或两个设置不正确(第 3 行)。当其中一个anonuid
或anongid
设置为 以外的值-1
时,必须将其更改为-1
(第 3 行)的正确值。
使用 sed 编辑我的配置文件的最佳方法是什么,anonuid=-1
并且anongid=-1
包含在每行的括号列表中,当然用逗号分隔符分隔?