같은 단어를 공유하는 모든 줄을 일치시키는 방법

같은 단어를 공유하는 모든 줄을 일치시키는 방법

Visual Studio Code에서 통합 검색 기능을 사용하고 있습니다. 검색조건에는 정규식 검색방법이 있습니다.

첫 번째 필드가 동일한 MAC 주소(xx:xx:xx:xx:xx)를 가진 행과 동일한 "Mamba"라는 단어가 포함된 행에 대해 전체 CSV(Visual Studio Code IDE 사용)를 검색하려고 합니다. :xx ) 행에 "Mamba"가 포함되어 있으면?

정규식을 사용하여 구문 분석해야 하는 CSV가 있습니다.

Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27
Mamba,1C:28:AF:8E:73:24,-68,6,11:21:29
Mamba,1C:28:AF:8E:75:20,-69,6,11:21:27
Mamba,1C:28:AF:8E:75:20,-68,6,11:21:29
,1C:28:AF:8E:73:31,-73,52,11:21:12
,1C:28:AF:8E:75:32,-75,52,11:21:14
,1C:28:AF:8E:73:24,-77,52,11:21:17
,1C:28:AF:8E:73:24,-73,52,11:21:12
,1C:28:AF:8E:75:32,-75,52,11:21:14
,1C:28:AF:8E:75:20,-77,52,11:21:17
eduroam,8C:7A:15:55:58:18,-88,6,11:21:12
eduroam,8C:7A:15:55:58:18,-88,6,11:21:14
eduroam,8C:7A:15:55:58:18,-88,6,11:21:17

정규식을 적용한 후 다음 결과를 선택해야 합니다.

Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27
Mamba,1C:28:AF:8E:73:24,-68,6,11:21:29
Mamba,1C:28:AF:8E:75:20,-69,6,11:21:27
Mamba,1C:28:AF:8E:75:20,-68,6,11:21:29
,1C:28:AF:8E:73:24,-77,52,11:21:17
,1C:28:AF:8E:73:24,-73,52,11:21:12
,1C:28:AF:8E:75:20,-77,52,11:21:17

참고: 검색 문자열/패턴 "Mamba"가 포함된 줄은 동일한 MAC 주소를 가진 다른 줄보다 앞에 나오지 않습니다.

답변1

내 이해는

  • 모든 경기맘바, 마이크 기억해
  • Mac을 따라가세요

난 이걸 가지고 왔어 awk

awk -F, '$1=="Mamba" {  m[$2]=NR ; } $2 in m { print ;}'

어디

  • -F,,구분자 로 사용
  • $1=="Mamba" { m[$2]=NR ; }m배열에 Mamba의 Mac을 기억하세요
  • $2 in m { print ;}일치하면 인쇄

더 짧은 형식으로 제안된 대로

awk -F, '$1=="Mamba"{ m[$2] } $2 in m'
  • 설정이 필요하지 않습니다m[$2]
  • 암시적 {print}조건$2 in m

Mamba와 일치하기 전에 mac이 나타나면 일치하는 항목이 없습니다.

데이터가

,1C:28:AF:8E:73:24,-77,52,11:21:17
Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27

첫 번째 줄은 캡처되지 않습니다.

답변2

사용GNU sed

##> regex for Mac address
h2='[[:xdigit:]]{2}'
mac_addr="$h2(:$h2){5}"

sed -En "
  /^(Mamba|),$mac_addr,/G
  /^[^,]*,($mac_addr),.*\n\1\n/ba
  /^Mamba,.*\n/!d
  h
  s/^Mamba,($mac_addr),.*/\1/M
  x
  :a
  P
" file

산출:-

Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27
Mamba,1C:28:AF:8E:73:24,-68,6,11:21:29
Mamba,1C:28:AF:8E:75:20,-69,6,11:21:27
Mamba,1C:28:AF:8E:75:20,-68,6,11:21:29
,1C:28:AF:8E:73:24,-77,52,11:21:17
,1C:28:AF:8E:73:24,-73,52,11:21:12
,1C:28:AF:8E:75:20,-77,52,11:21:17

  • Mamba 라인에서만 볼 수 있는 Mac 주소 저장을 위한 추가 예약 공간입니다.
  • Mac 주소(두 번째 필드)가 예약된 공간의 어딘가와 일치하면 현재 줄을 인쇄합니다.
  • Mamba 시리즈의 경우에만 Mac 주소를 추출합니다.

관련 정보