bash - 通过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
解决方案
您可以使用_
和.
作为分隔符来提取必填字段。
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