조회 사전에서 오류 제안 생성

조회 사전에서 오류 제안 생성

편집: 텍스트 필드의 공백을 더 잘 처리하기 위해 파일이 tsv로 변경되었습니다.

다음 형식의 csv 파일이 2개 있습니다.

파일 1: availableText.csv(크기가 클 수 있음)

"id1", "text1-1"
, "id1", "text1-2",
"id1", "text1-3",
"id1", "text1-4"
, "id2", "text2-1",
"id2", "text2-2"
"id2", "text2-3"
"id2", "text2-4"
...

파일 2: 오류 text.csv

"id1", "texta",
"id2", "textb",
"id3", "textc",
"id4", "textd"
...

의 각 줄에 대해 wrongText.csv동일한 ID에 대해 사용 가능한 텍스트 항목을 필터링하고 사용 가능한 가장 적합한 옵션을 제안하는 함수 tre-agrep(패턴의 오류를 허용하고 -B를 사용하여 가장 일치하는 항목을 반환하는 grep과 유사한 함수)를 사용하고 싶습니다.

예를 들면 다음과 같습니다 id1.

tre-agrep -B 'texta' (text1-1:4에서) | tr "\n" "$"
('text1-2$text1-4'와 같은 결과 생성)

필요한 출력 파일은 다음과 같습니다.

"id1", "texta", "text1-2$text1-4",
"id2", "textb", "text2-1$text2-3$text2-4"

노트:

  1. CSV는 어떤 형식으로든 변환할 수 있지만 텍스트에는 공백이 포함될 수 있습니다(특수 문자 제외).
  2. ID에 특수문자와 utf-8이 포함되어 있습니다.
  3. 속도는 중요하지 않습니다 (적어도 지금은)

답변1

결과는 다음과 같습니다.

for pattern in $(awk '{print $3}' wrong.csv) ; do tre-agrep -B $pattern available.csv | tr "\n" "$"; echo ; done  
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$

가독성 향상:

for pattern in $(awk '{print $3}' wrong.csv) 
do
  tre-agrep -B $pattern available.csv | tr "\n" "$"
  echo
done  

그런 것?

답변2

입력 파일을 tsv로 변경하고 다음 솔루션을 사용했습니다 (첫 번째 답변에서 영감을 얻었습니다)

echo "" > wrong_variables.tmp  
while read line  
do  
    var_template=`echo $line | cut -f2`  
    var_parameter=`echo $line | cut -f3`  

    #TODO order by template and cache grep output  
    grep "${var_template}" templ2.tmp  | cut -f2 > tmpfile  
    var_suggest=`tre-agrep -B "$var_parameter" tmpfile | tr "\n" "$"`  

    echo $line \\t $var_suggest >> wrong_variables.tmp
done < $OUTPUT_RAW

관련 정보