Awk 검색 - 동일한 문자열의 문자 클래스 결합

Awk 검색 - 동일한 문자열의 문자 클래스 결합

좋은 저녁이에요,

여러 문자 클래스를 동시에 사용하려고 했지만 성공하지 못했습니다. HTTP 트래픽 URI가 포함된 열이 있는 경우 REGEX에서 URI 필드에 6~10자 길이의 텍스트 문자열(숫자 포함)이 포함된 행을 식별하고 싶습니다.그리고소문자...각각 하나 이상이지만 대문자는 사용할 수 없습니다.

이 검색은 특정 문자나 문자열의 일부로 제한되지 않습니다.

테스트 문자열:

aasd4567
9f7g6s5df
0hjksdf73
123456789
12345/1234a
Wordswords
W0rdsW4rds
aasd4/567af
9f7g6s5dfasdf
0hjks/asdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312

괄호로 묶인 부울을 사용할 수 있기를 바랍니다. 즉:

awk --re-interval '$1 ~ /([0-9]+&[a-z]+){6,10}/'

그러나 이것은 작동하지 않습니다. 분명히, 그것들을 결합하는 것도 효과가 없습니다. 왜냐하면

awk --re-interval '$1 ~ /[a-z0-9]{6,10}/'

여전히 숫자와 소문자 없이 문자열을 반환합니다.

나는 [[:lower:]]와 [[:digit:]]를 결합하는 방법을 찾으려고 노력했지만 위의 첫 번째 예와 동일한 문제에 직면했습니다.

나는 이것이 매우 간단한 수정이라고 확신합니다. 내가 무엇을 놓치고 있습니까? 나는 작업에 가장 효율적인 도구인 gawk/grep/sed/etc를 사용하는 것에 반대할 생각이 없습니다.

감사해요

답변1

귀하의 질문을 올바르게 이해했다면 match먼저 RSTARTRLENGTH일치하는 문자열을 추출한 다음 숫자와 문자가 있는지 확인하십시오.

awk  --re-interval '{match($1, /[[:lower:][:digit:]]{6,10}/); 
  x=substr($1, RSTART, RLENGTH)}; x ~ /[[:lower:]]/ && x ~ /[[:digit:]]/' test_strings

테스트 문자열이 주어지면 다음이 생성됩니다.

aasd4567
9f7g6s5df
0hjksdf73
9f7g6s5dfasdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312

관련 정보