首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将相似文件名作为字符串,用coma分隔,用空格分隔不同的文件名

将相似文件名作为字符串,用coma分隔,用空格分隔不同的文件名
EN

Stack Overflow用户
提问于 2019-05-09 22:23:20
回答 1查看 46关注 0票数 3

我正在尝试从一个目录中的文件名中获取一个字符串,用coma分隔分组,用一个空格分隔不同的文件名。请看最后的预期输出。

目录中的文件

代码语言:javascript
复制
usa_la2_sky_1.csv
usa_la2_sky_2.csv
usa_nyc1_sky_1.csv
usa_nyc1_sky_2.csv

我试过了:

代码语言:javascript
复制
for f in *.csv ; do
    input=$input,$f
done
echo $input | sed s/,//

使用上面的代码输出:

代码语言:javascript
复制
usa_la2_sky_1.csv,usa_la2_sky_2.csv,usa_nyc1_sky_1.csv,usa_nyc1_sky_2.csv

预期输出:

代码语言:javascript
复制
usa_la2_sky_1.csv,usa_la2_sky_2.csv usa_nyc1_sky_1.csv,usa_nyc1_sky_2.csv
EN

回答 1

Stack Overflow用户

发布于 2019-05-09 22:56:57

这样就可以了:

代码语言:javascript
复制
ls *.csv | awk '{key=$0;sub(/_[^_]*csv/,"",key);a[key]=(key in a)?a[key]","$0:$0} 
        END{for (i in a){print a[i]}}' | 
    paste -s -d ' '

我们使用ls列出所有以.csv结尾的文件。然后我们使用awk对文件进行分组。我们通过剥离每个_1.csv后缀来生成密钥。所有这些字符串都存储在一个数组中,并用",“分隔。最后,我们将打印这些内容。由于您希望按空格分隔组,因此我使用paste -s来实现此目的。这会将每一行粘贴到一行中,由-d‘’表示的空格隔开。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56061597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档