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

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

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

보고

This_is_just_a_test

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



답변

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

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


답변

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

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

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


답변