/를 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.