在shell脚本中解析文本文件

23c0lvtd  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(455)

我正在运行一个hadoop命令并将输出保存到一个txt文件中。我只希望hadoop命令的特定部分在文本文件中。


# !/bin/sh

hadoop fs -ls /projects/abcd/ | egrep 'delta|snapshot' > /homes/abcd/tools/list_of_feeds.txt

“list\u of \u feeds.txt”的内容-

drwxr-x---   - abcd users                  0 2013-02-05 12:16 /projects/abcd/test1_delta
drwxr-x---   - abcd users                  0 2013-02-06 00:21 /projects/abcd/test2_snapshot

我只希望文件的内容是-

test1_delta
test2_snapshot

如何解析这个文件或在shell中执行此操作?
谢谢

7kjnsjlb

7kjnsjlb1#

你可以把你的命令输入awk。使用以下选项:


# !/bin/sh

hadoop fs -ls /projects/abcd/ | egrep 'delta|snapshot' | awk -F '/' '{print $4} > /homes/abcd/tools/list_of_feeds.txt 
cat /homes/abcd/tools/list_of_feeds.txt
wz3gfoph

wz3gfoph2#

awk 对于选择字段很有用(而且很容易)。

hadoop fs -ls /projects/abcd/ | awk -F '/' '/delta|snapshot/ {print $NF}' > /homes/abcd/tools/list_of_feeds.txt

我不知道你的for循环在做什么。 $NF 选择最后一个字段,因为硬编码路径名中的组件数有点愚蠢。
显然 egrep 不需要与 awk .

相关问题