首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash创建由零组成的2D矩阵的CSV文件,或者在bash中不可能的情况下使用最小的python

使用bash创建由零组成的2D矩阵的CSV文件,或者在bash中不可能的情况下使用最小的python
EN

Stack Overflow用户
提问于 2020-06-03 02:05:05
回答 3查看 28关注 0票数 0

这是一个数值数据科学应用程序。我需要在一个文件中创建一个由零组成的矩阵,用逗号分隔(在一行内),并以换行符结束(在每行的末尾)。这个bash代码是最接近的:

代码语言:javascript
复制
l=`python -c "print(f'{\"0, \" * 9}0')"`  # 10 zeros comma separated in one line
yes $l | head -n 3  # print line 3 times
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0

就目前而言,这是很好的,除非您尝试将9和3这两个文字更改为shell变量。然而,(对我来说)很难正确地编写代码,用外壳变量n=9替换文字9。我尝试使用bash和python,但仍然不起作用。例如,这两种不同的尝试实际上对变量不起作用(对我来说):

代码语言:javascript
复制
l=$(printf '0,%.0s' {1..$((n-1))}; printf '0')  # 100% bash code
yes $l | head -n $k  # print line 3 times
0,0
0,0
0,0

l=`python -c "print(f'{\"0, \" * 9}0')"`  # using a bit of python, 10 literal zeros comma separated in one line
yes $l | head -n 3  # print line 3 times
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0

在本例中,将python中的文本9更改为变量更糟糕,它给了我一些疯狂的东西,比如某种目录列表,这是我绝对不想要的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-03 02:16:26

只是对你的方法做了一点小小的改变:

代码语言:javascript
复制
n=10
k=3
yes "$(yes 0 | head -n "$n" | paste -s -d,)" | head -n "$k"

如果需要逗号后面的空格,那么管道到sed 's/,/, /g'就可以做到这一点。

票数 3
EN

Stack Overflow用户

发布于 2020-06-03 02:18:44

在纯bash中:

代码语言:javascript
复制
#!/usr/bin/env bash
cols=$1
rows=$2
declare -a row
for ((i = 0; i < cols; i++)); do
    row+=(0)
done
IFS=, line="${row[*]}"
for ((i = 0; i < rows; i++)); do
    echo "$line"
done

示例:

代码语言:javascript
复制
$ ./demo.sh 10 3
0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0
票数 2
EN

Stack Overflow用户

发布于 2020-06-03 02:20:01

很抱歉回答我自己的问题,但就像经常发生的那样,我在发帖后很快就找到了一个很好的工作答案!我只是把其他几个SO的答案组合在一起。对于那些找到比我的更简单的东西的人,一如既往地提前感谢你。

这是正确的:

代码语言:javascript
复制
export n
yes `python -c "import os; n=int(os.environ['n']); print(f'{\"0.0, \" * n}0.0')"` | head -n $k
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0

在我看来,这仍然可能对其他数值程序员有所帮助。

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

https://stackoverflow.com/questions/62158477

复制
相关文章

相似问题

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