큰따옴표와 작은따옴표로 묶인 변수 대체가 있는 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}\""

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

관련 정보