REGEX 및 GREP - 선택 단어 및 정적 단어를 포함한 검색 문자열

REGEX 및 GREP - 선택 단어 및 정적 단어를 포함한 검색 문자열

나는 각 줄의 시작 부분에서 정적 단어와 옵션 목록의 단어를 찾을 수 있도록 grep과 함께 사용할 정규 표현식을 작성하려고 합니다.

즉, 내가 원하는 일치 형식은 다음과 같습니다 StaticWord-opt1.StaticWord-opt2

이것거의일하다:

grep -E "^StaticWord-[(opt1)?(opt2)?(opt3)?]+" fileToCheck

하지만 다음 과 같은 일치 항목을 얻습니다 StaticWord-opt1(.StaticWord-pStaticWord-1

이는 op1, opt2 또는 opt3의 단일 인스턴스가 있는 경우에만 작동하므로 표현식을 다음과 같이 변경했습니다.

grep -E "^StaticWord-[(opt1)?(opt2)?(opt3)?]{1}" fileToCheck

이 시점에서는 위 목록의 마지막 두 개와 같은 일치 항목만 얻을 수 있습니다.

내 표현 논리는 " StaticWord-처음에 고정되고 ^다음 [ ]그룹 중 하나가 옵니다 ( ). 각 그룹은 존재할 수도 있고 존재하지 않을 수도 있습니다 ?. 마지막으로 우리는~ 해야 하다목록에는 하나만 있습니다 {1}.

답변1

Jordan이 자신의 의견을 답변으로 변환하지 않으면 이에 대해 확장하겠습니다.

|문자를 사용하여 "opt1, opt2 또는 opt3"을 의미할 수 있습니다. 또한, 그냥 원하신다면하나나타나는 사람들 중 당신은 그렇습니다아니요를 사용하고 싶습니다 +. 이는 "또는"을 의미합니다.".이를 통해 다음 사항에 더 가까워집니다.

grep -E "^StaticWord-(opt1|opt2|opt3)" fileToCheck

...하지만 나머지 라인에 대해서는 질문이 있습니다. 다른 것이 필요하지 않으면 다음을 사용하십시오.

grep -E "^StaticWord-(opt1|opt2|opt3)\$" fileToCheck

grep( 라인 끝 표시로 처리 되도록 달러 기호를 쉘에서 이스케이프 처리했습니다 .)

관련 정보