최근에는 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 ' ' '_'
해야합니다. 첫 번째 호출은 공백을 압축하고 두 번째 호출은 밑줄로 바뀝니다. 탭 및 기타 공백 문자를 추가해야 할 수 있습니다. 이는 공백 전용입니다.