我正在尝试从一个目录中的文件名中获取一个字符串,用coma分隔分组,用一个空格分隔不同的文件名。请看最后的预期输出。
目录中的文件
usa_la2_sky_1.csv
usa_la2_sky_2.csv
usa_nyc1_sky_1.csv
usa_nyc1_sky_2.csv
我试过了:
for f in *.csv ; do
input=$input,$f
done
echo $input | sed s/,//
使用上面的代码输出:
usa_la2_sky_1.csv,usa_la2_sky_2.csv,usa_nyc1_sky_1.csv,usa_nyc1_sky_2.csv
预期输出:
usa_la2_sky_1.csv,usa_la2_sky_2.csv usa_nyc1_sky_1.csv,usa_nyc1_sky_2.csv
发布于 2019-05-09 22:56:57
这样就可以了:
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‘’表示的空格隔开。
https://stackoverflow.com/questions/56061597
复制相似问题