두 열의 숫자를 비교하고 두 열의 행 중 동일한 값이 몇 개인지 계산해야 합니다. 예를 들어:
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
최종 카운터 값 인쇄/