需要用逗号值替换大约2500个CSV文件,我需要一个脚本来选择范围。
R000001.CSV .... R000499在5个目录中,但是需要使用for for next来更改文件名。
我需要一些建议来使这个脚本有效。
BTW _1是已处理文件的标记。
y <- x
答案 0 :(得分:1)
尝试:
for a in $(seq -f '%06.0f' "$f" "$l")
do
echo tr -d '\r' ';' <R*$a.CSV >R*${a}_1.CSV
done
注意:
表达式{$f..$l..1}
不起作用,因为变量不能放在大括号扩展中。
可以使用实用程序seq
代替大括号扩展。使用-f
选项,我们可以选择与您的文件名匹配的格式。
在循环中,您想引用$a
而不是$f
。
表达式$f_1
无法正常运行。 _
和1
都是shell变量名称中的合法字符。因此,shell将尝试查找名为f_1
的shell变量并展开它。那不是你想要的。在shell变量名称周围使用大括号(例如${f}_1
)可以避免这种情况。
seq
for ((i=$f; i<=$l; i++)) do j=$(printf '%06i' $i); tr '\r' ';'<"R$j.CSV" >"R${j}_1.CSV"; done
或者,为了清晰起见,写在多行上:
for ((i=$f; i<=$l; i++))
do
j=$(printf '%06i' $i)
tr '\r' ';'<"R$j.CSV" >"R${j}_1.CSV"
done