두 열의 행 중 동일한 숫자가 몇 개인지 계산하는 방법은 무엇입니까?

두 열의 행 중 동일한 숫자가 몇 개인지 계산하는 방법은 무엇입니까?

두 열의 숫자를 비교하고 두 열의 행 중 동일한 값이 몇 개인지 계산해야 합니다. 예를 들어:

17 19  
17 17  
17 18  
19 19  
25 22  
34 34

예상 출력:

3

awk각 행이 특정 유전자에 대한 것이기 때문에 정렬할 수 없습니다. 기술적으로 아직 수업에서 본 적이 없기 때문에 사용할 수 없습니다 . 이를 수행할 수 있는 방법이 있습니까 grep?

답변1

grep한 가지 방법은 확장된 정규식 패턴( 역참조 사용)을 사용하여 -E첫 번째 열의 값을 일치시키고 두 번째 열 값도 동일한 모든 행을 인쇄하는 것입니다.

첫 번째 부분은 ([^ ]+)첫 번째 열의 값을 캡처하고 \1캡처된 값을 참조하므로 함께 첫 번째 열에서 캡처된 값이 두 번째 열의 값과 동일한 행과 일치함을 나타냅니다. -c반환된 행 수를 인쇄 하는 데 사용됩니다 .

grep -cE '([^ ]+) \1' file

또한 부분 일치를 방지하려면 다른 플래그를 추가 -x하고 줄 앞이나 뒤에 문자(공백 포함)가 없는지 확인하세요.

답변2

awk 사용:

awk '$1==$2{count++} END {print count}' kk
3
  • $1==$2필드 1과 2 일치
  • count++일치하는 항목이 발견되면 카운터가 증가합니다.
  • print count최종 카운터 값 인쇄/

관련 정보