2014-11-22 2 views
0

간단한 빅 데이터 테스트를위한 데이터를 준비 중입니다. 아래는 제 코드입니다.쉘 스크립팅 : awk가 로컬 변수를 올바르게 출력하지 않습니다.

#!/bin/bash 
year_start=1900 
year_end=2014 
for((year=$year_start; $year <= $year_end; year=`expr $year + 1`)) 
do 
    for((d=1; $d < 365; d=`expr $d + 1`)) 
    do 
     random=$RANDOM 
     echo $year|awk '{printf("%d%0.5d\n", $0,$random)}' 
    done 
done 

그러나 AWK는 다음과 대신 년 + 어떤 임의의 숫자

190001900 
190001900 
190001900 
190001900 
190001900 
190001900 
190001900 
190001900 

어떤 도움을 인쇄한다?

답변

1

awk -v random=$random '{printf("%d%0.5d\n", $0,random)}' 
  • -v random=$random로 AWK 변수 값을 전달하는 AWK에서 같은

    사용 -v 쉘 변수를 사용할 수없는 것은 AWK 변수 random을지지하여 함께 세트 건네 셸 변수의 값 $random

시험

$ cat test 
#!/bin/bash 
year_start=1900 
year_end=2014 
for((year=$year_start; $year <= $year_end; year=`expr $year + 1`)) 
do 
    for((d=1; $d < 365; d=`expr $d + 1`)) 
    do 
     random=$RANDOM 
     echo $year| awk -v random=$random '{printf("%d%0.5d\n", $0,random)}' 

    done 
done 
$ bash test 
190015628 
190029371 
190027290 
190011319 
190027379 
190014108 
190006841 
190001113 
190032492 
190030980 
190000745 
190011316 
190005771 
190015510 
190023285 
190021061 
190026820 
^C 
+0

감사합니다. – rahul

+0

@rahul 당신은 환영합니다 :) – nu11p01n73R