파일 1 :
123
234
345
456
파일 2 :
123
234
343
758
예상 출력 : File3 :
TRUE
TRUE
FALSE
FALSE
따라서 코드는 두 파일을 비교하고 일치하는 경우 ‘TRUE’를 인쇄하고 그렇지 않으면 새 파일에서 ‘FALSE’를 인쇄해야합니다. 누구든지 이것에 대한 해결책을 제공 할 수 있습니까?
답변
사용 diff
에서, 다음과 같은 명령을 bash
지원하는 것을 나 다른 쉘 <(...)
대체를 처리 하거나 다음과 같이 당신이 그것을 에뮬레이션 할 수 있습니다 :
diff --new-line-format='FALSE'$'\n' \
--old-line-format='' \
--unchanged-line-format='TRUE'$'\n' \
<(nl file1) <(nl file2)
결과는 다음과 같습니다.
TRUE
TRUE
FALSE
FALSE
--new-line-format='FALSE'$'\n
, FALSE
줄이 다르면 인쇄 --old-line-format=''
하고 이전 파일을 diff 명령 으로 알려진 file1에 대해 줄이 다를 경우 출력을 비활성화합니다 (이를 서로 바꿀 수 있으므로 둘 중 하나는 FALSE
다른 것을 인쇄해야 함을 의미 합니다).
--unchanged-line-format='TRUE'$'\n'
TRUE
줄이 같은 경우 인쇄 하십시오. $'\n'
C 스타일 이스케이프 구문은 각각의 라인 출력 후 새로운 라인을 인쇄하는데 사용된다.
답변
파일에 탭 문자가 없다고 가정합니다.
$ paste file1 file2 | awk -F '\t' '{ print ($1 == $2 ? "TRUE" : "FALSE") }'
TRUE
TRUE
FALSE
FALSE
이는 paste
두 파일의 내용이 어느 한 열에있는 두 개의 탭으로 구분 된 열을 만드는 데 사용 됩니다. 이 awk
명령은 각 줄의 두 열을 비교하여 TRUE
열이 같으면 인쇄하고 그렇지 않으면 인쇄합니다 FALSE
.
답변
두 파일의 행 수가 같다고 가정합니다.
awk '{getline f2 < "file2"; print f2 == $0 ? "TRUE" : "FALSE"}' file1
비교 할 문자열이 숫자이고 어휘가 아닌 경우 숫자 비교를 수행합니다. 예를 들어, 100
과는 1.0e2
동일 간주됩니다. f2"" == $0
어쨌든 어휘 비교를 강제로 변경하십시오 .
awk
구현 에 따라 어휘 비교는 memcmp()
(바이트 대 바이트 비교)를 사용하는 것처럼 또는 strcoll()
두 문자열이 로케일의 데이터 정렬 순서에서 동일하게 정렬되는지 를 사용하는 것처럼 수행됩니다 . 샘플과 같이 모든 10 진수 입력이 아니라 일부 문자에 대해 순서가 올바르게 정의되지 않은 로케일에서 차이가 생길 수 있습니다.
답변
파이썬 3
with open('file1') as file1, open('file2') as file2:
for line1, line2 in zip(file1, file2):
print(line1 == line2)
산출:
True
True
False
False
당신이 필요로하는 경우 TRUE
와 FALSE
대문자로,이 중 하나를 사용하여 인쇄 라인을 교체 :
print(str(line1 == line2).upper())
print('TRUE' if line1 == line2 else 'FALSE')
답변
에서 bash
, while
루프 에서 각 파일을 읽고, 읽기 행을 비교하고 인쇄 TRUE
하거나 FALSE
적절하게 :
while IFS= read -r -u3 line1; IFS= read -r -u4 line2; do
[[ $line1 == $line2 ]] && echo TRUE || echo FALSE
done 3<file1 4<file2
read
파일 디스크립터 3과 4에서 각각 두 번의 호출을 읽습니다. 파일은 루프로의 두 가지 입력 경로 재 지정을 통해 파일로 경로 재 지정됩니다.
답변
Tried with awk command and it worked fine
awk 'NR==FNR{a[$1];next}{if ($1 in a){print "TRUE"} else{print "False"}}' file1 file2
산출
TRUE
TRUE
False
False