【发布时间】:2021-09-04 14:30:23
【问题描述】:
我有一个包含路径列表的文件(“dump_file”)(从hadoop fs -ls 输出生成),格式如下:
d hdfs 0 2021-06-01-13:14 /dir1
d hdfs 0 2021-06-01-13:14 /dir1/dir2
d hdfs 0 2021-06-01-13:14 /dir1/dir2/dir3
- abcdef 1201 2021-06-01-13:15 /dir1/dir2/dir3/file1
- abcdef 78441 2021-06-01-13:16 /dir1/dir2/dir3/file2
d hdfs 0 2021-06-01-13:14 /dir1/dir2/dir4
d hdfs 0 2021-06-01-13:14 /dir1/dir2/dir4/dir5
- abcdef 1201 2021-06-01-13:15 /dir1/dir2/dir4/file11
- abcdef 78441 2021-06-01-13:16 /dir1/dir2/dir4/file22
d hdfs 0 2021-06-01-13:14 /dir1/dir6/dir7
我的目标是提取任何给定节点的第一级子节点。 到目前为止,这就是我得到的(以“dir1”为例):
grep -Eio "/dir1.[^\/]+" < dump_file | sort -u | awk -F "/" '{ print $NF }'
dir2
dir6
但我也想拥有匹配行的第一个字段,如下所示:
d hdfs 0 2021-06-01-13:14 dir2
d hdfs 0 2021-06-01-13:14 dir6
“dir1/dir2”作为值应该返回:
d hdfs 0 2021-06-01-13:14 dir3
d hdfs 0 2021-06-01-13:14 dir4
"目录1/目录2/目录4:
d hdfs 0 2021-06-01-13:14 dir5
- abcdef 1201 2021-06-01-13:15 file11
- abcdef 78441 2021-06-01-13:16 file22
你知道我该怎么做吗?谢谢!
【问题讨论】:
-
如果你提供
dir1作为输入,输出不应该是dir2, dir6吗? -
你是对的,固定