2016-11-17 1 views
-1

두 단어 사이의 차이를 계산하고 두 단어 미만의 단어로 된 단어를 삭제하기 위해 bash 스크립트를 사용하려고합니다.단어 간의 수 차이 bash

예 입력 파일 :

hello 
heggo 
helloso 
good 
god 
face 
fake 
rage 

출력은 다음과 같습니다

hello 
heggo 
helloso 
rage 

입력 파일은 이미 소문자로 alphabetticaly 분류 한 줄에 하나 개의 단어 수 포맷됩니다.

폐기 된 단어는 하나님의

좋은 - 단지 한 글자 차이 만 추가 "O"

하나님 - 좋은

얼굴과 동일 - 만 C는 다른 다른 말.

가짜 - K 만 다른 단어와 다릅니다.

¿이 문제를 해결할 수있는 아이디어가 있습니까?

+4

코드를 작성 했습니까? – anubhava

+0

모든 단어를 다른 단어와 비교하고 있습니까? – 123

+0

아니, 이걸 처리 할 아무런 단서가 없다 – Carlimedes

답변

0

설명 및 설명에 따라 작동해야합니다. 단어 "good"은 2 개의 oo가 있기 때문에 유지됩니다. 일반적으로 어떤 위치에 두 글자가 동일한 단어는 보관됩니다.

datasource=$(cat b.txt) 
newdata="" 
while IFS='' read -r line; do 
found=0 
readarray word < <(echo "$line" |fold -w1) #splits each line in a char array 
    for eachletter in ${word[@]}; do 
     found=$(echo "$line" | grep -o $eachletter |wc -w) 
     if [[ $found -ge 2 ]] && [[ ${newdata[@]} != *"$line"* ]]; then 
      newdata+=("$line") 
     fi 
    done 
unset word eachletter found 
done <<< "$datasource" 
echo -e "New Data \n" 
printf '%s\n' ${newdata[@]} # >newfile.txt