我正在编写的 csh 脚本有问题。
我想做的是读取一个文件,并且对于我正在读取的这个文件的每一行,为我稍后将使用的某个变量分配一个新值。
为了简单起见,我有一个名为“zn”的字符串数组,其中包含 6 个值。我可以使用 smth 打印每个值,例如:
echo ${zn[$i]}
然后我尝试将这个数组的值与类似的东西一起使用(简单的例子只是为了解释):
cat file1 | awk '{i=NR;n='${zn[i]}';print n,$0}' >! file2
或其他尝试:
cat file1 | awk '{n='${zn[NR]}';print n,$0}' >! file2
好吧,我尝试了几乎所有可能的方括号、撇号、引号组合......而且我总是遇到一些错误,例如:
missing -.
任何帮助将不胜感激,解决方案可能非常简单明了。(如果我的语法不是最好的,我很抱歉,但我对此有点陌生)
编辑: 我在 bash 中移植了脚本
...这是我用来准备一些文本文件以在 GMT 中准备图形的脚本的一部分:
cat crosspdf.dat |
awk '
BEGIN { n = int(('$dz')/('$dz_new')) }
{
z=$1
for (i=6;i<=NF;i++) {
if ($i!=0) {
for(j=1;j<=n;j++)
print (i-4)*'$dv', z+(j-n/2)*'$dz_new', $i
}
}
}
' >! temp
这有效:您唯一需要知道的是 $dz 是一个常量值,现在我想更改它以便为我正在扫描的文件的每一行设置不同的值。我可以轻松地使用值准备数组,但我无法以某种方式将其包含在上一行中。PS:感谢支持 – Francesco 2 分钟前编辑
编辑 2
1) dv 和 dz_new 只是参数 2) dz 将是一个长度可变的数组,仅包含数字(深度间隔:smth like -6.0 1.0 5.0 10.0 ... 36.0) 3) crosspdf.dat 包含一些类似直方图的数据:每条线对应不同的深度(深度等距,现在不再,所以我需要使用 dz 数组)