文件名:stackgroup.acl
[groups]
stackoverflow=linus,steve,bill,adrian
stackexchange=charlie,darwin,carol,kelly
我需要一个 sed 代码来删除用户,无论它是在行的开头还是结尾。
这是我到目前为止得到的:
sed 's/\(.*=*\)linus,\(.*\)/\1\2/g'
sed 's/\(.*=*\)steve,\(.*\)/\1\2/g'
sed 's/\(.*=*\),adrian\(.*\)/\1\2/g'
如您所见,中间的很好,但第一个和最后一个用户会留下一个额外的逗号。
我什至尝试使用正则表达式:
sed 's/\(.*=*\),\?linus,\?\(.*\)/\1\2/g'
或
sed 's/\(.*=*\),*linus,*\(.*\)/\1\2/g'
但它不起作用。
有人可以帮忙吗?
最佳答案
使用两个表达式,第二个表达式负责处理名称紧接在 =
之后的边缘情况
#!/bin/bash
user="linus"
sed "s/,\?$user//;s/=,/=/" stackgroup.acl
关于linux - sed 删除 svn 访问控制列表中的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9075244/