使用shell提取行并保存到多个csv文件

时间:2018-05-08 11:18:02

标签: shell csv

我正在尝试从CSV文件中提取数据并使用Shell将其保存到多个CSV文件,我是shell新手并尝试使用以下代码,但我收到“未终止'y'命令错误”。请帮帮我,我不知道我哪里错了?

m=344
x=1
i=100
y=1
while [ $i -lt $m ]
do
sed -n '$y,$ip' test1.csv > $x.csv
i=$(( i + 100 ))
y=$(( y + 100 ))
x=$(( x + 1 ))

完成

1 个答案:

答案 0 :(得分:0)

shell变量不会在单引号内扩展/解释。见下面的例子。

jmaster:~$ echo $var # this works, as shell understand $var as variable
Hello World
jmaster:~$ echo '$var' # inside single quote, shell doesn't treat $ as special
$var
jmaster:~$ echo "$var" # works in double quotes
Hello World

在你的情况下,你已经在单身内使用了变量$ y和$ i,显然不会扩展。在那里使用双引号。

sed -n "${y}, ${i}p" test1.csv > $x.csv # this works
sed -n "$y, $ip" test1.csv > $x.csv # this won't work, as shell consider "ip" as variable
sed -n "$y, $i p" test1.csv > $x.csv # this too work, I hope

在使用shell进行游戏之前,最好先了解shell引用。除非难以解释错误。