如何将ls命令的String输出拆分为bash中的文件名中的数组?

时间:2017-09-11 11:09:36

标签: linux bash shell hadoop

我正在运行hdfs dfs -ls命令并将输出存储在bash中的变量中。存储在变量中的输出如下所示:

Found 3 items drwxrwx--- - user user 0 2017-07-31 15:47 /user/example/test/dt=2017-02-22 drwxr-xr-x - user user 0 2017-09-11 11:32 /user/example/test/dt=2017-09-06 drwxrwxr-x - user user 0 2017-09-08 15:46 /user/example/test/dt=2017-09-07

我试图将目录名称仅解析为数组,这看起来像:

array=[dt=2017-02-22, dt=2017-09-06, dt=2017-09-07]

由于在原始-ls命令上添加额外开关的限制(由于Hadoop API),我很难将输出以任何其他格式输出到第一个代码片段中所示的格式。

感谢任何建议,

感谢。

2 个答案:

答案 0 :(得分:3)

  array=(`dfs -ls | grep -Eo "df=[^ ]+"`)

  echo ${array[0]}

答案 1 :(得分:0)

使用 grep 工具:

arr=($(dfs -ls | grep -o 'dt=[^[:space:]]*'))

所有arr项:

echo ${arr[@]}
dt=2017-02-22 dt=2017-09-06 dt=2017-09-07