awk - 当其连续行在同一列中具有负值时,提取在特定列中具有正值的行
问题描述
我正在尝试对一些原始数据集进行一些分析,以提取其中第 9 列具有正值且其连续行在同一列中具有负值的特定行。
文件:
2020 01 11 00 28.5833 77.2000 986 280 280
2020 01 11 00 28.5833 77.2000 975 284 4
2020 01 11 00 28.5833 77.2000 968 284.4 0.4
2020 01 11 00 28.5833 77.2000 960 284 -0.4
2020 01 11 00 28.5833 77.2000 944 283 -1
2020 01 11 00 28.5833 77.2000 925 284 1
2020 01 11 00 28.5833 77.2000 901 286 2
2020 01 11 00 28.5833 77.2000 892 286.8 0.8
2020 01 11 00 28.5833 77.2000 850 286 -0.8
2020 01 11 00 28.5833 77.2000 700 276.8 -9.2
2020 01 11 00 28.5833 77.2000 677 275.2 -1.6
2020 01 11 00 28.5833 77.2000 594 268.9 -6.3
2020 01 11 00 28.5833 77.2000 587 269.1 0.2
2020 01 11 00 28.5833 77.2000 507 260.1 -9
2020 01 11 00 28.5833 77.2000 500 259.5 -0.6
在上述文件中,第 3 行在第 9 列 (0.4) 中具有正值,其连续行具有负值 (-0.4)。所以,我想提取第 3 行。同样的第 8 行和第 13 行。
解决方案
这awk
应该适合你:
awk '$9 < 0 && p9 > 0 {print pr; pr = p9 = ""} $9 > 0 {pr = $0; p9 = $9}' file
2020 01 11 00 28.5833 77.2000 968 284.4 0.4
2020 01 11 00 28.5833 77.2000 892 286.8 0.8
2020 01 11 00 28.5833 77.2000 587 269.1 0.2
或者更易读的形式:
awk '$9 < 0 && p9 > 0 {
print pr
pr = p9 = ""
}
$9 > 0 {
pr = $0
p9 = $9
}' file
推荐阅读
- webdrivermanager-java - WDM 不会尝试从主 URL 和镜像 URL 下载驱动程序
- android - Android Console Play - 内部测试 - 安装后找不到应用
- unicode - 用外语定义标识符
- google-chrome - Chrome 91/92 使用行跨度和列跨度打破表格布局
- c++ - 将两个 C/C++ 项目相互连接
- python - Do apache_beam pipelines need to be declared using a with statement?
- python - 在 ucf101 官方拆分上运行 c3d 模型时出错
- java - 阀门的部分尺寸问题
- gantt-chart - 如何根据 AnyGantt 中的自定义字段调整里程碑标记类型?
- python - 为什么警告不显示弃用消息