변수에서 원하지 않는 문자를 제거하는 스크립트

변수에서 원하지 않는 문자를 제거하는 스크립트

변수를 설정하는 스크립트가 있습니다. 일반적으로 HTML 파일에서 복사한 URL이며 변수가 사용됩니다.

복사한 텍스트/클립보드 콘텐츠를 사용하여 xclip -out변수로 설정합니다 $CLIP. 그러나 복사된 URL에는 때때로 ",',`등과 같은 원치 않는 문자가 포함될 수 있습니다 . 스크립트에서 이러한 모든 문자를 공백으로 바꾸길 원합니다.

답변1

",',` 복사된 URL에는 때때로 등과 같은 원치 않는 문자가 포함될 수 있습니다 . 스크립트에서 이러한 모든 문자를 공백으로 바꾸길 원합니다.

이것을 사용할 수 있습니다 sed.

$url변수가 다음과 같은 경우 :

echo $url 
http://1f,oo"2b`a'r.com

그러면 sed"원치 않는" 문자가 모두 공백으로 대체됩니다.

echo $url | sed 's/[^a-zA-Z0-9:/\.]/ /g'
http://1f oo 2b a r.com

답변2

이를 수행하는 방법에는 여러 가지가 있습니다.

자신의 상황에 맞는 올바른 16진수 코드를 사용하세요.

clean_url="$(echo ${dirty_url} | sed 's/[\x20-\x2D]/ /g')"

그런 다음 이를 실행하여 공백이 여러 개 있는지 확인하고 이를 하나의 공백으로 줄입니다.

clean_url=$(sed 's/  */ /g' <<< ${clean_url})

답변3

당신이 사용할 수있는Bash 매개변수 확장활성화 후확장된 와일드카드

CLIP=$'http://abc\".x\'y`.com'
printf '%s\n' "$CLIP"
http://abc".x'y`.com
chars_to_remove=("'" '"' '`') #set characters to remove into an array
chars_to_remove=$(IFS='|'; printf '+(%s)' "${chars_to_remove[*]}") #assemble in extglob format
printf '%s\n' $chars_to_remove
+('|"|`)
printf '%s\n' "${CLIP//${chars_to_remove}/ }"
http://abc .x y .com

답변4

단순화된 Bash 매개변수 확장:

root@debian:# CLIP=$'http://abc\".x\'y`.com';cleanclip=$(echo ${CLIP//[\'\`\"]});echo $cleanclip
#Output:
http://abc.xy.com

추신: 제거할 패턴은 [] 안에 있으며 문자는 이스케이프됩니다.

바라보다Bash 매뉴얼, 단락 3.5.3~에 대한${매개변수/패턴/문자열}

관련 정보