【发布时间】:2014-04-14 11:48:25
【问题描述】:
我正在尝试读取具有这种格式的电子表格
username, lastname, firstname, x1, x2, x3, x4
user1, dudette, mary, 7, 2, 4
user2, dude, john, 6, 2, 4,
user3, dudest, rad,
user4, dudaa, pad, 3, 3, 5, 9
基本上,它有用户名、这些用户名对应的名称以及每个 x 的值。我想要做的是从一个 csv 文件中读取这个,然后找到所有的空格并用 5s 填充它们。我这样做的方法是读取整个数组,然后用 0 替换所有空空格。这是目前为止的代码...
感谢 stackoverflow 上的另一位受访者,我得到的解决方案是
n=5
while IFS=, read username lastname firstname x1 x2 x3 x4; do
! [[ $x1 ]] && x1=$n
! [[ $x2 ]] && x2=$n
! [[ $x3 ]] && x3=$n
! [[ $x4 ]] && x4=$n
echo $username,$lastname,$firstname,$x1,$x2,$x3,$x4
done < something.csv > newfile.csv && mv newfile.csv something.csv
在过去的几个小时里,我一直在试图弄清楚如何将其扩展到 n 列的情况。所以在上面的例子中,我知道我有 7 列,所以我有 7 个变量读入。我现在要做的是弄清楚如何将它扩展到 n 列的情况。即使添加了另一列,我仍然需要代码才能工作。
【问题讨论】:
-
IFS=, read username lastname firstname x1 x2 x3 x4;:将其更改为IFS=, read -a columns;然后解析名为columns的数组
标签: arrays linux bash variables csv