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

변수 전달을 사용하여 쉘 변수를 AWK 변수로 가져와야합니다.

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

예를 들어 awkvar-th 필드를 인쇄 할 수 있습니다. 마찬가지로

:

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

@ 존 : 그 내 대답에 "예를 들어, awkvar 번째 필드를 인쇄하는 방법"을 참조하십시오, 달러 기호를 필요로 할 필드 지정자입니다. –

+0

내 실수. upvote을 가져라! –

관련 문제