"diff"에 있는 이러한 코드는 무엇을 의미하며 이를 제거하는 방법은 무엇입니까?

"diff"에 있는 이러한 코드는 무엇을 의미하며 이를 제거하는 방법은 무엇입니까?

diff현재 파일과 대상 간의 차이점을 찾는 데 사용합니다 .

내 명령은 diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt

출력은 다음과 같습니다

8c8,9
> VM-E

나는 이것을 다음을 사용하여 필터링했습니다. diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt | tail -n +2 | sed 's/> //g'

엄청난. 이제 여러 차이점이 있으면 다음과 같이 표시됩니다.

2d1
< esxi02
3a3
> psc-dr

두 가지 질문. 이 가치는 무엇입니까? <값이 존재 from-file하지만 존재하지 않으며 to-file그 반대의 경우도 마찬가지 라는 것을 알고 있습니다 >.

2d1두 번째 질문: 이 코드 및 3a3/또는 무슨 일이 일어나든 어떻게 제거합니까 ?

답변1

이 코드는 행 번호와 발견된 차이 유형을 제공합니다.

  • a추가됨을 나타냅니다.
  • c변경됨
  • d삭제됨

예: 8c8,9첫 번째 파일( )의 8행이 --from-file다음으로 변경되었음을 의미합니다.무엇무엇두 번째 파일의 8-9행에 저장됩니다. 이는 2d1첫 번째 파일의 라인 2가 삭제되었고 두 번째 파일의 라인 1 뒤에 올 것으로 예상되는 등의 의미입니다.

나는 당신이 이 코드를 정말로 제거하고 싶어하지 않을 것이라고 생각합니다. 이것은 매우 유용하지만, 코드를 제거하거나 다른 것으로 변경해야 한다면 다음 6가지 출력 형식을 사용하십시오(여기서는 GNU diff를 사용한다고 가정합니다). ):

  • --old-line-format
  • --new-line-format
  • --old-group-format
  • --new-group-format
  • --changed-group-format
  • --unchanged-group-format

여기서는 (다소 복잡한) 구문에 대한 모든 세부 사항을 다루지는 않겠습니다. 아래에서 해당 info diff설명을 찾을 수 있습니다.if-then-else장. 아래 코드는 귀하가 요구하는 내용을 정확하게 제공합니다. 즉, 코드가 전혀 없고 순수한 <합계 만 제공됩니다 >.

diff --old-line-format=$'< %l\n' --new-line-format=$'> %l\n' \
     --old-group-format=$'%<' --new-group-format=$'%>' \
     --changed-group-format=$'%>' --unchanged-group-format='' file1 file2

필요한 경우 별칭을 만들 수 있습니다.

관련 정보