2 METEOROLOGICAL DATA VERSION /
8 PR TD HR ZW ZT WD WS RI # / TYPES OF MOD/TYPE/ACC
3979316.8350 1050313.7180 4857065.7030 592.1910 PR SENSOR POS XYZ/H
END OF HEADER
10 1 1 0 0 15 927.9 4.3 99.1
10 1 1 0 1 15 927.9 4.3 99.1
10 1 1 0 2 15 927.9 4.3 99.1
10 1 1 0 15 15 927.9 4.2 99.1
10 1 1 0 16 15 927.9 4.2 99.0
10 1 1 0 30 15 927.7 4.1 99.1
10 1 1 0 31 15 927.7 4.1 99.1
10 1 1 0 45 15 927.5 4.1 99.1
10 1 1 0 46 15 927.5 4.0 99.1
10 1 1 1 0 15 927.4 4.1 99.1
10 1 1 1 1 15 927.4 4.1 99.1
在这个文本数据示例中,如何在“ END OF HEADER
”部分之后按顺序提取数字数据第 5 列中的所有 0、15、30、45;
10 1 1 0 0 15 927.9 4.3 99.1
10 1 1 0 15 15 927.9 4.2 99.1
10 1 1 0 30 15 927.7 4.1 99.1
10 1 1 0 45 15 927.5 4.1 99.1
10 1 1 1 0 15 927.4 4.1 99.1
一个快速的班轮将是:
正如 fedorqui 在下面的评论中提到的,甚至更快的一个班轮是:
语法解释:
通过仅接受与符合匹配
~
条件的项目匹配的行来过滤掉标题。尽管它是字段分隔数据的首选工具
grep
,但它在 中是完全可行的。awk
与
grep
:10
在开始时匹配,匹配([^[:blank:]]+[[:blank:]]+){3}
接下来的 3 个字段,然后匹配所需字段的第 5 个字段如果你使用 PCRE (
-P
),你可以替换[:blank:]
为\s
,看起来不错:例子:
您可以使用
sed
and来执行此操作awk
:(假设您的主题文本位于名为 的文件中
example.txt
)归属 - awk 命令取自 steeldriver 的评论
解释
赛德
/END OF HEADER/
/END OF HEADER/d
意味着删除包含/END OF HEADER/
模式空间之外的行,因为它不再在模式空间中,下一个命令p
将不会做任何事情awk