txt 파일의 내용을 비교하는 방법은 무엇입니까?

txt 파일의 내용을 비교하는 방법은 무엇입니까?

이름이 포함된 txt 파일이 있습니다.출력.txt:

output.txt

2128,4.4
2128,5.5

첫 번째 행의 쉼표 앞의 첫 번째 숫자가 두 번째 행의 첫 번째 숫자와 같고 두 번째 행의 쉼표 뒤의 두 번째 숫자를 반환하는 비교 스크립트를 갖고 싶습니다.

output:
5.5

만약에출력.txt첫 번째 행의 첫 번째 숫자와 두 번째 행의 첫 번째 숫자는 서로 다른 숫자를 갖습니다. 예를 들면 다음과 같습니다.

output.txt
2622,56
1011,65

그러면 예상되는 출력이 문자열로 반환됩니다.가치가 다릅니다

답변1

AWK 스크립트를 사용하여 이를 처리할 수 있습니다.

#!/usr/bin/awk -f
BEGIN { FS = "," }
NR == 1 { value = $1 }
NR == 2 {
    if ($1 == value) print $2
    else print "The value is different"
    exit
}

이는 첫 번째 행의 첫 번째 값을 저장한 다음 이를 두 번째 행의 첫 번째 값과 비교하여 같으면 두 번째 값을 인쇄하고, 그렇지 않으면 "값이 다릅니다"를 인쇄합니다. 그런 다음 더 많은 줄을 읽는 데 시간을 낭비하지 않도록 명시적으로 종료됩니다.

답변2

확인된 주소 bash:

#!/bin/bash

file=/path/to/output.txt

if [[ $(awk -F , 'NR==1 {print $1}' $file) -eq $(awk -F , 'NR==2 {print $1}' $file) ]]; then

awk -F , 'NR==2 {print $2}' $file

else

echo "The value is different"

fi

- 변수는 fileoutput.txt가 위치한 경로에 할당됩니다.

- if명령문 에서 구분 기호 awk역할을 하며 ,각 행의 두 번째 열의 두 번째 값을 인쇄하고 비교합니다.

- 값이 동일하면 두 번째 행의 두 번째 열을 인쇄합니다.5.5

- 값이 같지 않으면 "값이 다릅니다"를 인쇄합니다.

지정한 값을 가진 두 개의 파일을 사용하여 이를 테스트했습니다. file다른 사람들과 함께 작업하기 위해 스크립트의 변수 값을 변경할 수 있습니다 .

답변3

sed 및 awk 명령을 사용해 보았습니다.

#!/bin/bash
i=`sed -n '1p' l.txt| awk -F "," '{print $1}'`
j=`sed -n '2p' l.txt| awk -F "," '{print $1}'`
if [[ $i == $j ]]
then
awk -F "," 'NR==2{print $2}' l.txt
else
echo "The value is different"
fi

산출

5.5

답변4

일반적으로 sed는 라인별로 작동합니다. 이를 재정의하고 검사를 위해 패턴 공간에 다음 줄을 채울 수 있습니다.

패턴 공간에서 두 행의 첫 번째 필드가 동일한지 확인한 후 대체를 수행하고 출구로 향합니다. OTW, 전체 패턴 공간을 필수 메시지로 철저하게 확인한 다음 sed가 이를 기본 작업으로 인쇄합니다.

sed -e '
   N
   s/^\([^,]*\),.*\n\1,\(.*\)/\2/;t
   s/.*/The Value is Different/
'  file.csv

관련 정보