큰따옴표와 작은따옴표 사이의 변수 대체를 사용하는 Grep 패턴

큰따옴표와 작은따옴표 사이의 변수 대체를 사용하는 Grep 패턴

이제 다음과 같은 스키마가 있다고 가정해 보겠습니다.

Thisisatest="1"

.file

나는 일치하고 싶다정밀한위의 문자열하지만어떤 이유로든 목록의 일부 숫자를 반복하여 변수로 사용하고 다음을 수행하기로 결정했습니다.

Thisisatest="$varhere"

여기서 위의 숫자 $varhere는 위의 숫자와 같습니다 1. (루핑 숫자를 언급했지만,이것가능한 향후 사용 사례이자 여전히 예입니다)

이제 일을 더 쉽게 하기 위해 위의 내용과 일치시키고 싶다고 가정해 보겠습니다.정밀한무늬하지만위의 변수와 그 내용을 사용하여:

grep 'Thisisatest="$varhere"' file

파일에 문자열 Thisisatest="1"$varhere숫자가 포함되어 있습니다 1.

문제는 이것이 작동하지 않는다는 것입니다.왜냐하면작은따옴표 사이에는 변수 확장이 발생하지 않습니다(위 그림 참조).

다음은 이를 반박하려는 실패한 시도입니다.

  1. 변수 교체를 위한 콘텐츠 교체
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"

echo여기서는 출력이 다음과 같은지 확인하는 데 사용됩니다 .옳은문자열이므로 grep...에 대한 입력으로 사용할 수 있으며 다음을 출력합니다.

'Thisisatest="'1'"
  1. 더 많은 인용문 추가
echo "'Thisisatest="${varhere}"'"

산출:

'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''

산출:

Thisisatest="'1'"

나머지는 분명합니다... 이제 위의 마지막 시도는 제가 원하는 것에 가까운 것 같지만 여전히 그렇지 않습니다.

위와 같이 할 수 있는 방법이 있나요?

답변1

grep "Thisisatest=\"${varhere}\""

나를 위해 작동합니다. " \"는 쉘 해석을 통해 다음 문자의 "나는 특수 문자입니다" 플래그를 뒤집습니다.

관련 정보