Recentemente, tive que escrever um pequeno script que analisou VMs no XenServer e como os nomes das VMs são principalmente com espaços em branco, por exemplo, Windows XP ou Windows Server 2008, tive que cortar esses espaços em branco e substituí-los por sublinhados _. Eu encontrei uma solução simples para fazer isso usando sed, que é uma ótima ferramenta quando se trata de manipulação de cordas.
echo "This is just a test" | sed -e 's/ /_/g'
retorna
This_is_just_a_test
Existem outras maneiras de fazer isso?
Respostas:
Você pode fazer isso usando apenas o shell, sem necessidade de
tr
oused
fonte
${str//[^a-zA-Z0-9]/_}
; de qualquer forma, se você não está se limitando ao shell POSIX puro, use os recursos disponíveis para você.Esta é uma programação limítrofe, mas procure usar tr :
Deve fazer isso. A primeira invocação comprime os espaços, a segunda substitui com sublinhado. Você provavelmente precisa adicionar TABs e outros caracteres de espaço em branco, isso é apenas para espaços.
fonte