ここの初心者。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"/