regex - 在 awk 中使用 not 运算符 (!) 的 grep 和 sed 中的等效正则表达式
问题描述
假设我想找到这种形式的正则表达式:
awk '!/[^TAP]/ {print $1}' sample.txt
它为 ATA 提供匹配,但不为 ATAU、TAR 和 TR 提供匹配。
另一方面,这为所有四个提供了匹配:
awk '/[TAP]/ {print $1}' sample.txt
grep
对于前一种情况,正确的正则表达式语法是什么sed
?
模拟输入文件是:
ATA
ATAU
TAR
TR
输出应该是由仅包含字符 A 和/或 T 和/或 P,但不包含任何其他字符的字符串组成的行。
解决方案
你可以使用这个awk
:
awk '/^[ATP]+$/' file
ATA
或者这grep
也可以:
grep '^[ATP]\+$' file
ATA
正则表达式模式^[ATP]+$
将匹配一个或多个A
、T
或P
字母,并且由于锚点^
和$
,它不允许任何其他字符。
推荐阅读
- java - 我们可以在不循环的情况下将地图数组转换为模型实体类[POJO]的数组吗?
- android - 将我的 ionic 应用程序 apk 上传到 Google Play 控制台时出错
- php - 检查已经存在的用户名或不是 MySQL,PHP
- oracle - 验证在 oracle apex 的页面提交上不起作用
- android - 如何在控制台上显示所选项目
- java - Java 程序在 netbeans 中编译,但不在 CMD 中,包不存在
- arduino - Arduino 发送不一致的 UDP 消息
- javascript - 添加到使用 JavaScript 生成的输入字段的数据库数组
- python - 在下载之前使用下载链接检查视频文件大小的代码?[编辑]
- python - 美汤去标