我在 hdfs 中有一个 feed。
我必须找到第三列不为空的行。
Feed 由定界符分隔|
SQL 等效项
select * from feed_table where column_3 is not null;
输入:
1|abc|123
2|def|
3|ff|124
4|gh|
输出:这里第三列不为空。
1|abc|123
3|ff|124
答案1
您可以用于awk
此任务。将 awk 中的分隔符设置为|
,然后检查第三列是否不是空字符串。
$ cat /tmp/foo
1|abc|123
2|def|
3|ff|124
4|gh|
$ awk -F'|' '$3 != ""' /tmp/foo
1|abc|123
3|ff|124
答案2
两种grep
选择:
grep -v '|$' < input
上面查找的行不末端有一个管子。如果您的数据文件有仅有的三列,那么这是查找(排除)最后一个(第二个)管道之后没有任何数据的行的快捷方式。
grep '|[^|].*|.' < input
上面的比较严格一点;它要求存在管道符号,后跟除管道符号 ( [^|]
) 之外的任何内容,后跟任何内容,后跟管道符号,后跟某物( .
)。这将允许一个空的第一的场地。