记录下grep使用遇到的问题与心得

上周写Mercurial与apache的脚本,关于创建代码库和创建用户的,shell中用到一些sed和grep操作,遇到些问题,记录下。

目标文件中是以<用户组>:<用户> <用户> <用户> 。。。 这种形式存放,每一行一个组,后面接用户。脚本接收两个参数,用户USER和组GROUP,然后把用户写入相应的组的最后,为了避免重复写,用grep 判断相应的的组中是否已经存在该用户。开始这样写if grep "^$GROUP$" /var/www/file | grep "\<$USER\>"发现查找无结果,后来想想是$GROUP的匹配不对,^以GROUP开头的行,$以GROUP结尾的行,我想找的只是以GROUP开头的行,所以应该去掉$。后来想关掉grep的输出,于是if grep  -q "^$GROUP$" /var/www/file | grep -q  "\<$USER\>",又查不到了,后来想想是第一个-q把输出关掉了,导致管道后面的grep没有输入了!于是去掉第一个grep的-q就行了。然后用sed -i  "/^$GROUP\>/s/$/ $USER/g" /var/www/file 这句先查找以GROUP开头的行然后在行尾添加USER。

删除以GROUP开头行中的USER:sed -i "/^$GROUP\>/s/$USER//g" file

匹配关键字并向下删除六行:sed -i "/$GROUP/,+6d"file

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值