쉘 변수를 사용하여 sed 패턴을 복사하는 방법은 무엇입니까?

쉘 변수를 사용하여 sed 패턴을 복사하는 방법은 무엇입니까?

SED 모드가 있습니다.

[^a-zA-Z0-9]

/b\./s/.*c\.. \([^ ]*\) .*/\1/p

등.

echo 명령에 변수로 전달해야 합니다.

현재 $pattern 변수를 다음과 같이 정의합니다.

$pattern="[^a-zA-Z0-9]"

그런 다음 파이프를 통해 다음과 같이 에코되도록 합니다.

echo "$OUTPUT" | sed "s/$pattern/g"

그러나 패턴을 전달하는 대신 코드는 명령을 전달하고 오류를 반환합니다.

=[^a-zA-Z0-9]: command not found

무엇이 잘못되었나요?

답변1

$ pattern='[^a-zA-Z0-9]'
$ echo "123 ABC" | sed "s/$pattern/g"
sed: -e expression #1, char 16: unterminated `s' command
$ echo "123 ABC" | sed "s/$pattern//g"
123ABC
$ echo "123 ABC" | sed "s/$pattern/XYZ/g"
123XYZABC

그리고...

쉘 변수는 선행 없이 할당됩니다 $.

답변2

바꾸다

$pattern="[^a-zA-Z0-9]"

통과

pattern="[^a-zA-Z0-9]"

쉘 변수는 선행 $ 없이 할당됩니다.

관련 정보