2017-03-31 14 views
-1

난수를 생성 이 출력의 세 번째 파일 :파이프 입력 내가이 방식으로 서식이 개 파일을 가지고

word token occurrence1/occurence2 
while read token pos count 
do 
    #get pos counts 
    poscount=$(grep "^$pos" $2 | cut -f 2) 
    #calculate probability 
    prob=$(echo "scale=5;$count/$poscount" | bc -l) 
    #print token, pos-tag & probability 
    echo -e "$token\t$pos\t$prob" 
done < $1 

문제는 내 출력이 같은 점이다 :이 내 코드가 어디에서 왔는지 모르겠어요 번호 라인이 있습니다

- : .25000 
: : .75000 
' '' 1.00000 
0 CD .00396 
1000 CD .00793 
13 CD .00793 
13th JJ .00073 
36 
29 
16 CD .00396 
17 CD .00396 

, 그들은하지 않습니다 이전 파일에서.

왜이 숫자가 표시됩니까? 해당 줄을 제거 할 수있는 방법이 있습니까? 미리 감사드립니다.

+0

일 무엇입니까 실제 파일 이름? 안전을 위해 변수를 두 개 인용하십시오 :''$ 2 ''. – choroba

+1

왜 실제 파일의 일부 줄을 게시하지 않습니까? '-x' 옵션이나'echo -e "> $ token <\t> $ count <\t> $ postcount <"'와 같은 트릭을 사용하여 스크립트를 디버깅하려 했습니까? 순서대로,'count'와'postcount' 값을 검사하지 않았을 때''난수를 생성하는 부분 ''이라고 확신 할 수 있습니까? – Jdamian

+0

아마 범인 :'grep "^ $ pos"$ 2 | 컷 -f 2 '; 여러 행이'$ pos'의 특정 값으로 시작하면'grep'은 그것들 모두를 찾습니다. – agc

답변

0
  1. paste, cut, & dc 사용 방법 :

    방법이 bash를 사용
    echo "5 k $(paste file[12] | cut -f 3,5)/p" | dc | \ 
    paste file1 - | cut --complement -f 3 
    
  2. , paste & dc :

    paste <(join -1 2 file1 -2 1 file2 -o 1.1,1.2) \ 
        <(echo "5 k $(join -1 2 file1 -2 1 file2 -o 1.3,2.2)/p" | dc)