【发布时间】:2015-06-02 22:59:48
【问题描述】:
我有数百个带有数据的 .dat 文件,我想用命令 awk
awk 'NR % 513 == 99' data.0003.127.dat > data.0003.127.Ma.dat
我试着写一个类似的脚本文件
for i in {1 ... 9}; do
i=i*3
datafile = sprintf("data.%04d.127.dat",i)
outfile = sprintf("data.%04d.127.Ma.dat",i)
awk 'NR % 513 == 99' datafile > outfile
done
我只需要0003 0006 0009 ...文件,但上面的脚本不能正常工作。错误说
bash: ./Ma_awk.sh: line 3: syntax error near unexpected token `('
bash: ./Ma_awk.sh: line 3: `datafile = sprintf("data.%04d.127.dat",i)'
接下来我该怎么办?我使用的是 ubuntu 14.04。
【问题讨论】:
-
多个问题:不要在变量赋值周围使用空格,即删除
=前后的空格。此外,当您在bash中引用变量时,您必须使用$符号,即"$datafile"请注意,在处理文件名时使用双引号是明智的。然后sprintf中不存在bash使用printf代替。 `datafile=$(printf "%04d" $i) -
算术需要使用
((i=i*3))或一些等效的符号来完成。