나는 각 줄의 시작 부분에서 정적 단어와 옵션 목록의 단어를 찾을 수 있도록 grep과 함께 사용할 정규 표현식을 작성하려고 합니다.
즉, 내가 원하는 일치 형식은 다음과 같습니다 StaticWord-opt1
.StaticWord-opt2
이것거의일하다:
grep -E "^StaticWord-[(opt1)?(opt2)?(opt3)?]+" fileToCheck
하지만 다음 과 같은 일치 항목을 얻습니다 StaticWord-opt1(
.StaticWord-p
StaticWord-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
( 라인 끝 표시로 처리 되도록 달러 기호를 쉘에서 이스케이프 처리했습니다 .)