查找非空列 |巴什

查找非空列 |巴什

我在 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

上面的比较严格一点;它要求存在管道符号,后跟除管道符号 ( [^|]) 之外的任何内容,后跟任何内容,后跟管道符号,后跟某物( .)。这将允许一个空的第一的场地。

相关内容