bash 경로에서 /를 바꾸고 싶습니다.

bash 경로에서 /를 바꾸고 싶습니다.

/를 path/test/path/에서 /replace로 바꾸고 싶습니다.

즉, 예상되는 출력은 =test=path=to=replace 여야 합니다.

답변1

#! /usr/bin/env bash

A="/test/path/to/replace"
B="${A////=}"
echo "$B"

결과:

=test=path=to=replace

답변2

여기에는 몇 가지 옵션이 있습니다. 당신은 그것을 사용할 수 있습니다tr

new_path=$(echo '/test/path/to/replace' | tr '/' '=')

또는sed

new_path=$(echo '/test/path/to/replace' | sed 's/\//=/g')

답변3

여기에서 sed 명령을 사용할 수 있습니다.

sed "s/\//=/g"

명령 출력의 예:

pwd | sed "s/\//=/g"
echo "/test/path/to/replace" | sed "s/\//=/g"

파일 예(파일 내 텍스트에서 "/"를 "="로 변경):

sed "s/\//=/g" file_name

변수 예(변수 내용 변경, "/"가 "="로 변경됨):

echo $var1 | sed "s/\//=/g"

물론 "기본" 구분 기호(슬래시 "/")를 빼기 기호 "-"로 바꿀 수 있습니다. 이 경우 백슬래시 기호를 사용하지 않고 더 나은 가독성을 얻을 수 있습니다.

sed "s-/-=-g"

지침(sed 명령에 익숙하지 않은 경우를 대비해):

sed "s/\//=/g"
sed - stream editor (non-interactive command-line text editor)
s   - substitute sed command
/   - separators - first, third and fourth slash sign
\   - used for escaping second slash sign so that bash interprets second slash sign as litteral slash sign - not as separator)
/   - second slash sign; litteral slash sign (not separator) - term that we want to replace
=   - term that we want to get after replacement
g   - global sed command (replace all slashes, not just first one - without 'g' sed will replace only first slash in the path)


sed "-/-=-g"
All the same as in the previous explanation, except the two things:
1. We don't use escape sign (backslash) and
2. minus signs represent separators.

관련 정보