awk - 基于图案的打印线
问题描述
我有格式的数据
A ((!(A1+A2)))
B (A1A2)
C (A1+A2)
D (!(A1+A2)B1)
E (!A1+!A2)
F ((A1+A2)+A3+A4)
G ((A1A2)+(A3A4))
我想要输出为
C (A1+A2)
F ((A1+A2)+A3+A4)
G ((A1A2)+(A3A4))
我想得到只有+
我用了
awk -F' ' '$2 ~ /\+/' file
但这列出了其中包含的所有!
行+
解决方案
您应该在代码中再添加 1 个条件,如下所示。您已经在检查第二个字段是否包含+
在其中添加一个额外的检查,如果它也没有!
,那么您应该得到预期的输出。
awk '$2!~/!/ && $2~/\+/' Input_file
你也不需要使用-F' '
选项,因为默认情况下它本身awk
使用空格作为所有行的字段分隔符,所以我从建议的代码中删除了它。
推荐阅读
- python - 如果两个 Tree 具有相同的值节点,则使用 set 计数
- laravel - 查询与 slug 而不是 id 的 hasMany 关系?
- nginx - 如何配置 nginx 反向代理
- batch-file - 如何运行批处理脚本以获取文本文件中的输出
- r - 如何使用 plotweb 二分中的 ifelse() 语句根据交互值更改交互的颜色?
- jquery - Angular 5 Jquery问题
- python - 合并熊猫df中的特定值
- computer-vision - 对象跟踪上下文中的本地和全局数据关联有什么区别?
- sql-server - 如何将 XML 数据列表存储在表中
- javascript - Angular 和浏览器在加载数据方面的限制