2010-12-09 35 views
1

我是awk和bash的新手。我正在尝试对几个不同的文件进行一些格式化。但我没有得到我想要的。 $符号无法正确传递,我尝试使用$,\,“”,-v chr =“$”命令。但因为我知道一点,我真的不明白为什么不工作:

THXS !!

cat<< END2> par.tem 
cat<< END> temp 
awk '{ 
if ($5 == "1") 
val = 202 
else if ($5 == "4") 
val = 300 
else 
val =$5 ; 
if (NR > 8 && $6 < 9999) 
printf "%14.3f%14.3f%12.3f%12d%12.5f\n", $1, $2, $3, val, $6  
}' sbrt_202_300_xyz.out > sbrt_au_202_300_xyz.asc 
END 
bash temp 
END2 

sed -e "s/RX1/202/g" -e "s/RX2/300/g" -e "s/NUM1/1/g" \ 
    -e "s/NUM2/4/g" par.tem > run-temp 
bash run-temp 

回答

4

您需要使用变量传递来将shell变量获取到AWK变量中。例如,

awk -v "awkvar=$shellvar" '{print $awkvar}' file 

例如打印awkvar-th字段。

同理:

awk -v "awkvar=$1" '{print $awkvar}' file 
+0

@约翰:这些都是字段说明这确实需要货币符号,请参阅“打印awkvar个领域,例如”我的回答。 – 2010-12-09 03:14:14

相关问题