2012-09-06 3 views
0

쉘 스크립트 요구 사항의 초보자입니다. 플랫 (.txt) 파일에서 행 수를 가져와 int 변수에 할당해야합니다.유닉스 쉘 스크립트에서 변수에 레코드 수를 씁니다.

이 시도하지만 주위 주시면 감사하겠습니다

FNAME="pn_data_"$month$day$year".txt" 
    declare -i recordcount=0 
     for f in $FNAME 
    do 
     recordcount+=`wc $f |'{print $1}'` 
    done 

어떤 제안을 작동하지 않습니다.

답변

3

wc와 트릭은 당신이 명령 줄에서 파일 이름을 제공하는 경우, 그것은 출력을 인쇄한다는 것입니다. 이를 피하려면 표준 입력으로 피드하십시오. | 기호의 RHS가 이상합니다. 조치 앞에 awk을 놓친 것일 수도 있습니다. 그러나 과잉이다 : 당신은 간단하게 작성할 수 있습니다

declare -i recordcount 

recordcount=$(wc -l < $FNAME) 

(내가 일반적으로 declare 라인을 신경 쓰지 것입니다.) 나는 당신이 단지 하나 개의 파일이 있고 필요하다고 믿고있어

주 하나의 파일에서 레코드 수. 여러 파일을 처리하고 집계 횟수를 얻으려면 셸에서 각 파일을 개별적으로 처리하고 wc의 값에 대한 산술을 수행하거나 모든 파일에 wc을 실행하고 전체 수를 출력하도록해야합니다 (출력의 마지막 라인에서 번호를 얻으려면 sed 또는 awk으로 후 처리 할 수 ​​있습니다).

+0

고마워요 조나단! –

+0

+1 스틱 트릭! – perreal

+0

@Jonathan : 감사합니다 그것은 작동하지만 레코드가없는 경우 명령의 반환 값은 무엇입니까 .. recordcount = 0.how에 할당해야하는 레코드가없는 경우 ... –

0
FNAME="pn_data_"$month$day$year".txt" 
for f in $FNAME 
do 
    recordcount=$(expr $recordcount + $(wc -l < $f)) 
done 
+0

빠른 응답을 얻은 Perrel에게 감사드립니다. –

관련 문제