新手来了 我正在尝试使用 awk 打印一些信息。所以我写了一个shell脚本
#!/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 变量?
第二个问题,哪种方法更好?using '/'$bcName'/
or using -v var1=$bcName '$0 ~ var1
?,为什么我不能使用'/$bcName/
or'/"$bcName"/
直接?这里的强引用和弱引用有什么区别?