首页 > 解决方案 > 通过listing获取部分名称

问题描述

我在名为“downloads”的目录中有以下文件,如何从文件名中获取名称的一部分(共享、fmw、本地)。“1000_server003_”之后的字符串可能没有固定长度,但“1000_server003_”每次都保持固定。

1000_server003_shared.tar.gz.part-aa
1000_server003_shared.tar.gz.part-ab
1000_server003_shared.tar.gz.part-ac
1000_server003_shared.tar.gz.part-ad
1000_server003_fmw.tar.gz.part-aa
1000_server003_fmw.tar.gz.part-ab
1000_server003_fmw.tar.gz.part-ac
1000_server003_local.tar.gz.part-aa
1000_server003_local.tar.gz.part-ab

结果应该如下

shared
fmw
local

标签: bashshellunixsh

解决方案


您可以使用_.作为分隔符来提取必填字段。

awk -F[_.] '{print $3}' file_name

输出:

shared
shared
shared
shared
fmw
fmw
fmw
local
local

如果您只想要不同的名称,只需将其通过管道传输到sort

awk -F[_.] '{print $3}' file_name |sort -u

输出:

fmw
local
shared

推荐阅读