Removendo todos os espaços, tabulações, novas linhas, etc de uma variável?

21

Este é o erro que estou recebendo e está falhando devido a uma variável cujo valor deve ser 2 (estou recebendo isso usando select * from tabel ). Estou obtendo espaços nessa variável.

+ 0 != 
         2
./setjobs[19]: 0:  not found.

Como removo todos esses espaços ou uma nova linha dessa variável? Pode tr , sed ou alguma coisa ajudar?

Isso é o que estou fazendo:

set_jobs_count=$(echo  "set heading off;
      select count(*) from oppar_db
      where ( oppar_db_job_name, oppar_db_job_rec ) in ($var) ;" | \
  sqlplus -s ${OP_ORA_USER}/${OP_ORA_PASS}@$OPERATIONAL_DB_NAME)

Isso funciona como sugerido:

| sed 's/[[:space:]]//g'

Mas ainda obtenho um valor como:

  set_jobs_count=
  2
    
por munish 24.02.2012 / 13:28

2 respostas

29

Você pode usar tr , como em tr -d '0125' , o que removerá espaços, tabulações, retornos de carro e novas linhas.

    
por 24.02.2012 / 17:23
4

Em ksh, bash ou zsh:

set_jobs_count=…
set_jobs_count=${set_jobs_count//[[:space:]]/}

Em qualquer shell, você pode remover os espaços em branco iniciais e finais e normalizar todos os espaços em branco intermediários em um único espaço como este:

set +f
set -- $set_jobs_count
set_jobs_count=$*
set -f

set +f desativa a globulação; Se você sabe que os dados não contêm nenhum dos caracteres \[?* , você pode omiti-lo.

    
por 27.02.2012 / 03:14