패턴에 하이픈 "-"이 포함된 경우 grep과 일치

패턴에 하이픈 "-"이 포함된 경우 grep과 일치

$a를 $b와 일치시키기 위해 다음 명령을 작성했지만 값에 "-"가 포함되면 오류가 발생합니다. 이것을 어떻게 피할 수 있습니까?

# a="-Xmx5324m"
# b="-Xmx5324m"
#
#
#  echo "$a"  | grep -Fxc "$b"
grep: conflicting matchers specified

답변1

--패턴 앞에 배치 :

echo "$a"  | grep -Fxc -- "$b"

--많은 명령/쉘 내장 기능에 대한 명령 끝 옵션을 지정합니다. 이후 나머지 인수는 위치 인수로 처리됩니다.

답변2

@sebasth의 훌륭한 답변 외에도,당신은 그것을 사용할 수 있습니다grep's -e 패턴에 대한 옵션으로 PATTERN을 사용합니다( <<< zsh여기 문자열 연산자가 대신 사용됩니다 echo. 이식성도 참조하세요 printf '%s\n' "$a").

grep -Fxc -e "$b" <<<"$a"

또는 다른 옵션에 추가로.

grep -Fxce "$b" <<<"$a"

당신의 목표는 바이트 단위이기 때문에문자열 동등 비교대신 이 명령을 사용하십시오 [.

if [ "$a" = "$b" ]

또는 $a포함된 경우 ksh 구성을 $b사용하십시오 .[[...]]

if [[ $a == *"$b"* ]]

또는 Bourne과 유사한 모든 쉘에서 더 이식성이 뛰어납니다.

case $a in
  *"$b"*) ...
esac

관련 정보