私が書いている csh スクリプトに問題があります。
私がしたいのは、ファイルを読み取り、読み取り中のこのファイルの新しい行ごとに、後で使用する特定の変数に新しい値を割り当てることです。
簡単にするために、6つの値を含む「zn」という文字列配列があります。次のような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: サポートに感謝します – フランチェスコ 2 分前 編集
編集2
1) dv と dz_new は単なるパラメーターです 2) dz は、数値だけを含む可変長の配列になります (深さの間隔: -6.0 1.0 5.0 10.0 ... 36.0 のような smth) 3) crosspdf.dat には、いくつかのヒストグラムのようなデータが含まれます:各行は異なる深さに対応します (深さは等間隔でしたが、現在はそうではありません。そのため、dz 配列を使用する必要があります)