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]"
쉘 변수는 선행 $ 없이 할당됩니다.