grep - 避免在 grep 结果中使用破折号
问题描述
我正在尝试选择其中包含名称“paul”的行。
!grep -w '^paul' some_file
这也返回以paul-henri开头的行。如何选择仅以单词“paul”开头的单行?
(换句话说,破折号 - 或斜线 / 和点 . 如果后面跟着单词 paul 则被选中)
更新:
感谢蒂姆,这行得通:
grep -w '^paul' some_file | grep -vE 'paul[-./?]'
解决方案
您可以匹配模式^paul[^-]
:
!grep -w '^paul[^-]' some_file
这将匹配任何以 开头的行paul
,然后是一个或多个除破折号以外的字符。如果您还需要匹配可能以仅 开头并包含的行paul
,则可能需要使用负前瞻:
^paul(?!-)
但是,这需要扩展版本grep
,并且您的 grep 版本可能不支持它。
推荐阅读
- threshold - yolov3.cfg中YOLO层的ignore_thresh和truth_thresh的作用是什么?
- html - 网格布局周围不需要的边距
- phalcon - phalcon路由器不发送
- html - 如何使用模糊滤镜使图片作为背景
- sql - 我的表包含 tdate 列,数据类型 date
- typescript - TypeScript 中的原子类型区分(标称原子类型)
- visual-studio-code - 通过 vscode API 访问硬件/设备信息
- spring - 我们可以在spring中使用没有@repository注解的DAO吗
- javascript - 如何使用函数式编程范式转换 jquery grep 函数?
- xquery - 有没有办法按输入中的位置范围对记录进行分组?