Autor Tópico: Snafus dúvidas..  (Lida 2177 vezes)

Offline groove

  • Usuário Ubuntu
  • *
  • Mensagens: 482
    • Ver perfil
Snafus dúvidas..
« Online: 23 de Abril de 2010, 18:33 »
Estou fazendo um shell scrip para converter minhas playlists do wmp para o rhythmbox, utilizando snafus:
Código: [Selecionar]
sed -e 's/<[^>]*>//g'para capturar determinado conteúdo entre duas tags, ocorre que quando vou escrever este conteúdo no meu arquivo ele fica com caracters em branco. Exemplo:
Quero pegar o que está dentro de <title>NOME DO ALBUM</title>, quando uso o snafus ele substitui o <title> por espaços em branco, ficando assim                                    NOME DO ALBUM, como tratar isso?
Ubuntu 18.04

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Snafus dúvidas..
« Resposta #1 Online: 23 de Abril de 2010, 19:22 »
Olá, o código que você postou deveria funcionar (remover tudo que está entre < e > e não colocar nada no lugar), tem certeza que não tem um espaço sobrando? Exemplo
No script está assim:
Código: [Selecionar]
sed -e 's/<[^>]*>/ /g'E o correto é o que você postou:
Código: [Selecionar]
sed -e 's/<[^>]*>//g'
Vê a diferença? Não há espaço entre as duas barras antes do g.

De qualquer forma aqui vão exemplos de como remover espaços com sed (retirados do material de expressões regulares do http://aurelio.net/ Recomendo):

Remover espaço/tabulação no inicio da linha
Código: [Selecionar]
sed 's/^[ \t]*//'
Remover espaço/tabulação no final da linha
Código: [Selecionar]
sed 's/[ \t]*$//'
Remover espaço/tabulação no inicio e no final da linha
Código: [Selecionar]
sed 's/^[ \t]*//;s/[ \t]*$//'
Olhe http://aurelio.net/sed/ para outras dicas de sed em português.

Offline groove

  • Usuário Ubuntu
  • *
  • Mensagens: 482
    • Ver perfil
Re: Snafus dúvidas..
« Resposta #2 Online: 24 de Abril de 2010, 16:31 »
Engraçado irtigor está exatamente como postei, sem o espaço..usei o código como você falou e funcionou para retirar os espaços do inicio da linha porém não entendi o que ocorreu. Como falou, deveria "remover tudo que está entre < e > e não colocar nada no lugar".
Segue meu código, posso estar fazendo algo errado :)
Código: [Selecionar]
#!/bin/bash
nomeArqOri=$1
nomeArq=$1.pls #pega nome do arquivo pelo argumento e adiciona extensão
touch "$nomeArq" #cria o arquivo

echo "[playlist]" >> "$nomeArq" #escreve no arquivo
echo -n "X-GNOME-Title=" >> "$nomeArq" #escreve no arquivo
cat "$nomeArqOri" | grep "<title>.*</title>" | sed -e 's/<[^>]*>//g' | sed -e 's/^[ \t]*//g'>> "$nomeArq"
Ubuntu 18.04