a와 b라는 두 개의 파일이 있습니다. 이 두 파일을 비교하고 파일 이름과 함께 세 번째 파일의 차이점을 확인하고 싶습니다. 누구든지 간단한 명령으로 나를 도울 수 있습니까?
답변1
diff a b > differences
일을 해야 합니다. 두 파일의 차이점은 파일에 저장됩니다 differences
.
답변2
당신은 그것을 사용할 수 있습니다grep차이점을 확인하는 함수(file3은 출력 파일입니다):
grep -Fxvf file1 file2 > file3
표지판은 어디에 있습니까?
-F
: PATTERN을 줄 바꿈으로 구분된 고정된 문자열 목록으로 해석합니다. 이 중 하나가 일치합니다.-x
: 전체 행과 정확히 일치하는 일치 항목만 선택합니다.-v
: 일치의 의미를 반전시키고 일치하지 않는 행을 선택합니다.-f
FILE: FILE에서 한 줄에 하나씩 패턴을 가져옵니다. 빈 파일에는 패턴이 0개 포함되어 있으므로 일치하는 항목이 없습니다.
플래그 사용 -n
: 출력의 각 줄 앞에 입력 파일의 줄 번호를 붙입니다.
grep -n -Fxvf file1 file2 > file3
답변3
그누 차이
gnu diff가 있는 경우(diffutils에서 diff (GNU diffutils) 3.3
).
diff --old-line-format='old %L' --new-line-format='new %L' --unchanged-group-format='' u v
old PV Name /dev/dsk/c0t4d0
new PV Name /dev/dsk/c99t4d0
(파일로 리디렉션하는 방법은 아래에 나와 있습니다.)
awk의 기본 차이점
기본 diff에서는 awk를 사용하여 '<' 및 '>'를 구문 분석합니다.
diff u v
178c178
< PV Name /dev/dsk/c0t4d0
---
> PV Name /dev/dsk/c99t4d0
awk를 사용하여 파일 이름을 입력하세요.
diff u v | awk '$1 == "<" { printf "u: %s\n",$0; next ; }
$1 == ">" { printf "v: %s\n",$0 ; next ; }
{ print;} '
178c178
u: < PV Name /dev/dsk/c0t4d0
---
v: > PV Name /dev/dsk/c99t4d0
(가독성을 위해 구분된 행)
이제 diff 파일에 저장하세요.
diff u v | awk '$1 == "<" { printf "u: %s\n",$0; next ; } $1 == ">" { printf "v: %s\n",$0 ; next ; } { print;} ' > differences