0

ここの初心者。awk print いくつかの情報を使用しようとしています。だから私はシェルスクリプトを書いた

#!/bin/bash

turbVar="U"
bcName="outlet"
str="$turbVar $bcName b.c. = "
# method-1
awk -v RS='}' '/'$bcName'/ { printf "%20s = %s\n" $str $4; exit;}' BCFile  | tr -d ";"
# method-2
awk -v RS='}' -v var1=$bcName '$0 ~ var1 { printf "%20s = %s\n" $str $4; exit;}' BCFile  | tr -d ";"

BCFileファイルの内容は

boundary
{
    inlet
    {
        type            fixedValue;
        value           uniform (5 0 0);
    }

    outlet
    {
        type            inletOutlet;
        inletValue      $internalField;
        value           $internalField;
    }

    ....
} 

次のようなものを出力したいと思っています

U outlet b.c. = inletOutlet

残念ながら、これは機能しません。それは不平を言うawk: (FILENAME=0/U FNR=4) fatal: not enough arguments to satisfy format string %20s = %s

awk printf で $str 変数を使用できないのはなぜですか?

2番目の質問、どちらの方法が優れていますか? を使用'/'$bcName'/または使用しているのに、または直接-v var1=$bcName '$0 ~ var1使用できないのはなぜですか? ここでの強い引用と弱い引用の違いは何ですか?'/$bcName/'/"$bcName"/

4

1 に答える 1