bash에서 공백을 (밑줄) _로 바꾸는 가장 쉬운 방법은 [닫힌]


92

최근에는 XenServer에서 VM을 구문 분석하는 작은 스크립트를 작성해야했고 VM의 이름이 Windows XP 또는 Windows Server 2008과 같이 대부분 공백으로되어 있기 때문에 공백을 잘라 내고 밑줄 _로 바꿔야했습니다. 문자열 조작과 관련하여 훌륭한 도구 인 sed를 사용하여이 작업을 수행하는 간단한 솔루션을 찾았습니다.

echo "This is just a test" | sed -e 's/ /_/g'

보고

This_is_just_a_test

이를 수행하는 다른 방법이 있습니까?


8
그리고 질문은?
RageZ 2009

2
안녕 latz, Stackoverflow는 질문과 답변 사이트입니다. 당신은 질문을하고 다른 사람들이 대답하거나 다른 사람들의 질문에 대답 할 수 있습니다. 지식을 공유하고 싶다면 질문을 한 다음 스스로 대답 할 수 있습니다 (다른 사람들도 대답 할 시간을 남겨둔 후).
mouviciel 2009

2
oups는이 지식을 여기에 저장하도록 추가 할 것이라고 생각했습니다. 어쨌든 내 자신의 질문에 대답하여 다음 시간에 말한 것처럼 할 것입니다 :)
flazzarini 2009

답변:


175

당신은 단지 쉘을 사용하지 않아도 그것을 할 수 없습니다에 대한 tr또는sed

$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test

5
또는 ASCII가 아닌 모든 단어 문자를 밑줄로 변환하십시오. ${str//[^a-zA-Z0-9]/_}; 어느 쪽이든 순수한 POSIX 쉘을 고수하지 않는다면 사용 가능한 기능을 사용하십시오.

합법적 인 구두점도있을 수 있습니다. 우리는 결코 모릅니다.
ghostdog74 2009

내가 찾던 바로이 솔루션에 대한 thx. 고마워요
flazzarini

18

이것은 경계선 프로그래밍이지만 tr 사용을 살펴보십시오 .

$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'

해야합니다. 첫 번째 호출은 공백을 압축하고 두 번째 호출은 밑줄로 바뀝니다. 탭 및 기타 공백 문자를 추가해야 할 수 있습니다. 이는 공백 전용입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.