2015-01-28 4 views
0
#!/usr/bin/env bash 
for year in all/* 
do 
    echo -ne `basename $year .gz`"\t" 
    gunzip -c $year | \ awk '{ temp = substr($0, 88, 5) + 0; 
     q = substr($0, 93, 1); 
     if (temp !=9999 && q ~ /[01459]/ && temp > max) max = temp } 
    END { print max }' 
done 

하둡 책에서 찾은 파일을 읽은이 Awk 스크립트에 대해서는 약간의 의문이 있습니다. 줄 번호 5 (gunzip으로 시작하는 줄)에서 | 다음에 awk 전에 백 슬래시 \의 용도는 무엇입니까?awk 전에 백 슬래시가 혼동 스럽다는 것은 무엇을 의미합니까?

+1

'\ awk'은 "awk"(첫 문자로 공백 포함)를 실행하는 것을 의미합니다. 그것은 이상하게 보입니다. 그러나 그 이름을 가진 명령을 가질 수는 있습니다. – Biffen

+0

당신은'\ awk'을 볼 수 있는데, 이것은 [\ curl ... | bash ... 슬래시는 무엇입니까?] (http://stackoverflow.com/q/15951772/1983854) – fedorqui

+0

설명을 주신 Biffen에게 감사드립니다. 여기를 제거하면 문제가되지 않을 것이라고 생각합니다. 내가 맞습니까? –

답변

1

책에 오타가 있거나 스크립트가 불완전하게 옮겨 졌습니다. 백 슬래시는 선택적으로 줄 바꿈에 사용될 수있다 :

echo "moo" | wc -l 

에 있지만,이 특별한 경우에 해당합니다

echo "moo" | \ 
wc -l 

는, 백 슬래시 파이프 후 완전히 선택 사항입니다, 당신은뿐만 아니라

를 작성할 수 있도록
echo "moo" | 
wc -l 

어떤 경우에도 질문에 스크립트를 사용하는 방법은 백 슬래시가 잘못되었습니다.

+0

감사합니다. –