linux - Linux:我想获取 column3 的前 10 条记录。该列有一些缺失的数据。我已经对文件进行了排序
问题描述
我不确定如何在这里忽略丢失的数据。
我的;
分隔文件看起来像(用空格写它以便它可读):
Col1 Col2 Col3 Col4 Col5
12 a ? ? ?
1 b ? ? ?
45 c 7.22 6.09 2.2
11 d 7.0 3.89 9.7
26 e 6.24 8.2 5.9
and so on....
我想获取最大值为 column3 的记录
Col1 Col2 Col3 Col4 Col5
45 c 7.22 6.09 2.2
11 d 7.0 3.89 9.7
26 e 6.24 8.2 5.9
我以相反的顺序对 column3 上的文件进行了排序。不知道如何进一步进行。
sort -t';' -k3 -r original.txt > newfile.txt
解决方案
命令行的好处在于,您可以轻松地将最佳工具用于正确的应用程序,或者使用管道链接输出,|
或者通过创建临时文件(如newfile.txt
.
In this case, using sort
is the apt choice for sorting your data. 排序后,您可以使用在解析数据方面非常有效的单独工具,awk
.
从您的 sorted 开始newfile.txt
,此awk
操作将仅打印包含 5 个字段的行(假设您丢失的数据实际上丢失并且没有空分隔符,例如您的行看起来像45;c;
而不是45;c;;;
)
awk -F';' 'NF == 5 { print }' newfile.txt
但是,在空字段被分隔的情况下(例如45;c;;;
),并假设只有第 3 到 5 列可能缺少数据,这将处理它:
awk -F';' 'NF == 5 && $3 && $4 && $5 { print }' newfile.txt
请注意,由于默认行为awk
是打印,因此上述{ print }
内容实际上是不必要的,但包含在教学中。
因此,从头到尾,您可以通过以下方式获得所需的结果,
sort -t ';' -rk3 original.txt | awk 'NF==5 && $3 && $4 && $5' > result.txt
推荐阅读
- go - 模块:如何强制依赖库的版本
- c# - 从 LINQ 查询的一部分中获取值并将其添加到结果中
- python - 从 django 表单在 mysql 中存储多个复选框
- docker - 无法解析 docker 端点
- python - GitPython 中当前日期和前一段时间之间的 git diff
- node.js - 如何使用expressJS在url中添加可变数量的参数?
- java - 如何将Xml转换为Json格式并放入RabbitMQ
- qr-code - ZPL - 如何将 GS1 应用程序标识符嵌入到 GS1 二维码中
- assembly - LC3 程序集:如何将字符串添加到内存行,而不是字符
- react-native - JPush-react-native 本地通知横幅未在 Android 上显示