【发布时间】:2013-04-08 17:47:40
【问题描述】:
我正在尝试编写一个 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 包含在每行的括号列表中,当然用逗号分隔符分隔?
【问题讨论】:
标签: bash