awk - 如何通过awk排除与列中正则表达式模式匹配的行?
问题描述
我想排除包含特定字符串的行。
header
1:test
2:test
3:none
4:test
为什么这些命令不起作用?
awk -F: 'FNR>1 {$0 !~ /none/} {print $1}' 1.txt
awk -F: 'FNR>1 {$2 !~ /none/} {print $1}' 1.txt
但这有效:
awk '$0 !~ /none/ {print $0}' 1.txt
我打算得到
1
2
4
解决方案
您需要提供正则表达式测试作为条件,而不是作为操作,并且可以使用
awk -F: 'FNR>1 && !/none/{print $1}' file
awk -F: 'FNR>1 && $2 !~ /none/{print $1}' file
查看awk 在线演示
细节
-F:
- 将字段分隔符设置为冒号FNR>1 && !/none/
- 如果当前文件的已处理记录数超过 1 并且none
行中没有(如果$2 !~ /none/
使用,如果字段 2 不包含none
模式,则返回 true){print $1}
- 打印字段 1 值。
推荐阅读
- excel - 如何在 Tableau 工具提示中自动添加图片?
- php - 如何将 docker 容器上的 php 脚本与网络主机连接,同时在网络主机上使用 mysql docker 容器
- react-native - 已安装应用程序时,如何在 React Native 中从实际应用程序打开应用程序?
- react-native - React-native-fast-image 不适用于 ios14 OS xocde beta
- hikaricp - 使用 hikari 数据源构建 micronaut 原生镜像
- machine-learning - 这可以运行梯度下降来训练 SVM 吗?
- c++ - ifstream 读取方法是同步的吗?
- jquery - 用于 Wordpress 的 JQuery + Slick Slider 和 ACF
- bash - 我如何为多行中的所有匹配制作 AWK
- watson-assistant - 如何在 Watson Assistant 中以 dd.MM.yyyy 格式重新格式化日期?