awk - 仅模式匹配字符串
问题描述
我有一个包含单词的文件
abciuf.com abdbhj.co.in abcshjkl.org.in.2 abciuf zasdg cbhjk asjk
包括其他内容。这个词开头abci, abdb, abcs, abai
是我的要求。所以我只想要 print 开头的单词abci, abdb, abcs, abai
like -abciuf.com abdbhj.co.in abcshjkl.org.in.2 abciuf Azerbaijan
我已经通过 grep 命令尝试过,但它对我没有帮助
cat /etc/xyz.txt|egrep -o "abdb*|abci*|abcs*|abai*"
cat /etc/xyz.txt|egrep -Eow "abdb*|abci*|abcs*|abai*"
解决方案
grep -Eo `\<(abdb|abci|abcs|abai)\S*' </etc/xyz.txt
\<
(或\b
)匹配“单词”的开头(或“单词”边界)(A|B)
匹配 A 或 B\S*
匹配零个或多个非空格字符(直到一个非非空格字符)尝试使用 grep 的
-w
选项是个好主意,但它对“单词”的定义过于严格(如果遇到匹配停止.
)- shell 的含义
*
与 grep 的不同 - 您可以使正则表达式更短,但它变得更难阅读
推荐阅读
- android - 我如何通过任何链接或任何 APP 商店安装我的 PWA 应用程序,而不是从手机浏览器
- ios - 在 Swift 中以编程方式隐藏 TabBarViewController 中的选项卡
- scala - Spark - CSV - Nullable false 不会引发异常
- javascript - 我的网站如何检测浏览器是否使用深色/浅色主题而不是操作系统是否使用主题
- flutter - 当我转到不同的页面时,如何保持计时器的状态?
- java - 如何让顾客继续购物,直到顾客决定停下来?我不知道为什么我的循环不起作用
- reactjs - 从列表中删除用户:Ant Design
- r - 遍历数据框中的行并读取值
- ruby - 如何修复“名称或服务未知(www.googleapis.com:443)”
- php - 在 WordPress 中生成多个元框的函数