선 간의 차이점 강조

선 간의 차이점 강조

거의 동일한 줄이 있지만 약간의 차이가 있는 파일이 있는데 각 줄 간의 차이점을 강조하고 싶습니다.

예:

  • 민첩한 갈색 여우는 게으른 개 위로 뛰어올랐습니다.
  • 노래CK갈색여우도약저 게으른 개를 지나가세요.
  • 돌팔이여우가 튀어나왔다V매우게으른 개.
  • 돌팔이 여우가 뛰어오른다진짜매우 게으른 개.

(여기서 굵은 글씨는 이전 줄에 비해 삽입 및 변경된 문자를 표시하고, 다음 줄에 삭제된 문자는 이탤릭체로 표시합니다.)

강조 표시가 예제와 정확히 같을 필요는 없지만 어떤 문자가 추가, 변경 또는 제거되었는지 나타내야 합니다. 그리고 각 줄의 실제 텍스트가 여전히 원본과 동일하도록 강조 표시(예: 한 줄에 이전 문자와 새 문자를 인쇄하지 않음)를 통해서만 이를 표시해야 합니다.

나는 무언가를 만들려고 시도했지만 dwdiff(라인을 반복한 다음 연속된 라인을 비교) 삭제된 문자를 강조 표시하는 방법을 찾지 못했습니다.

infile=$1
line1=
line2=
lineNo=0
while IFS="" read -r nextLine || [ -n "$nextLine" ]; do
    line1=$line2
    line2=$nextLine

    if [[ "$lineNo" -gt 0 ]]; then
        dwdiff -1 -c <(printf '%s\n' "$line1") <(printf '%s\n' "$line2")
    else
        printf '%s\n' "$line2"
    fi

    lineNo=$((lineNo+1))
done

이상적으로는 차이가 실제로 문자에 적용되지만 단어 수준의 차이도 적용됩니다.

이 결과를 얻을 수 있는 방법이 있나요 dwdiff? 아니면 이를 수행할 수 있는 기존 도구가 있습니까?

관련 정보