LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 865|回复: 3

grep怎么才能只输出正则表达式的部分

[复制链接]
发表于 2009-6-4 11:17:43 | 显示全部楼层 |阅读模式
比如grep 'a .* b' xx.txt
我想只要.*这部分内容。
发表于 2009-6-4 21:25:12 | 显示全部楼层
再用sed之类的处理下吧

分组 (a)(.*)(b) 只显示2 , \2
回复 支持 反对

使用道具 举报

发表于 2009-6-5 01:20:12 | 显示全部楼层
恩,sed这样可以。
  1. he-bash-3.2$ cat 1
  2. a sdf gwe sdfwe csde ge b
  3. a sdf gwe sdfwe csde ge bfd
  4. a sdf gwe sdfwe csde ge fesb
  5. a sdf gwe sdfwe csde ge geb b asdfw
  6. he-bash-3.2$ grep "a .* b" 1 | sed -e "s/^a \(.*\) b$/\1/"
  7. sdf gwe sdfwe csde ge
  8. a sdf gwe sdfwe csde ge bfd
  9. a sdf gwe sdfwe csde ge geb b asdfw
  10. he-bash-3.2$ grep "a .* b" 1
  11. a sdf gwe sdfwe csde ge b
  12. a sdf gwe sdfwe csde ge bfd
  13. a sdf gwe sdfwe csde ge geb b asdfw
  14. he-bash-3.2$ grep "a .* b" 1 | sed -e "s/a \(.*\) b/\1/"
  15. sdf gwe sdfwe csde ge
  16. sdf gwe sdfwe csde gefd
  17. sdf gwe sdfwe csde ge geb asdfw
复制代码

LZ可以仔细看一下区别。另外也可以试试AWK,如下:
  1. he-bash-3.2$ grep "a .* b" 1 | awk -F"a " '{ print $2}' | awk -F" b" '{ print $1}'
  2. sdf gwe sdfwe csde ge
  3. sdf gwe sdfwe csde ge
  4. sdf gwe sdfwe csde ge geb
复制代码

(文件同上)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-5 08:19:24 | 显示全部楼层
主要是前后这个a和b有不确定性,不过我现在也是用sed处理的了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表