2010-12-09 34 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

相關問題