[string] Bash에서 한 문자를 다른 문자로 교체

bash의 문자열에서 공백 ( )을 점 ( .)으로 바꾸는 것이 가능해야합니다 .

나는 이것이 매우 간단하다고 생각하지만, 새로운 용도 이므로이 사용을 위해 비슷한 예제를 수정하는 방법을 알 수 없습니다.



답변

인라인 쉘 문자열 교체를 사용하십시오. 예:

foo="  "

# replace first blank only
bar=${foo/ /.}

# replace all blanks
bar=${foo// /.}

자세한 내용은 http://tldp.org/LDP/abs/html/string-manipulation.html 을 참조하십시오.


답변

다음 tr과 같이 사용할 수 있습니다 .

tr " " .

예:

# echo "hello world" | tr " " .
hello.world

보낸 사람 man tr:

설명
     표준 입력에서 표준 출력으로 문자를 번역, 압착 및 / 또는 삭제합니다.


답변

bash에서는 구문 으로 문자열에서 패턴 교체 를 수행 할 수 있습니다 ${VARIABLE//PATTERN/REPLACEMENT}. 첫 번째 항목 만 바꾸지 /말고 그대로 사용하십시오 //. 패턴은 파일 글로브와 같은 와일드 카드 패턴입니다.

string='foo bar qux'
one="${string/ /.}"     # sets one to 'foo.bar qux'
all="${string// /.}"    # sets all to 'foo.bar.qux'


답변

이 시도

 echo "hello world" | sed 's/ /./g' 


답변

매개 변수 대체 사용 :

string=${string// /.}


답변

경로를 위해 이것을 시도하십시오 :

echo \"hello world\"|sed 's/ /+/g'|sed 's/+/\/g'|sed 's/\"//g'

큰 따옴표로 묶인 문자열 내부의 공백을 +노래로 바꾼 다음+ 부호를 백 슬래시로 바꾼 다음 큰 따옴표를 제거 / 바꾸십시오.

Cygwin의 경로 중 하나의 공백을 대체하기 위해 이것을 사용해야했습니다.

echo \"$(cygpath -u $JAVA_HOME)\"|sed 's/ /+/g'|sed 's/+/\\/g'|sed 's/\"//g'


답변