Snafus dúvidas..

Iniciado por groove, 23 de Abril de 2010, 18:33

tópico anterior - próximo tópico

groove

Estou fazendo um shell scrip para converter minhas playlists do wmp para o rhythmbox, utilizando snafus:
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

irtigor

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:
sed -e 's/<[^>]*>/ /g'
E o correto é o que você postou:
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
sed 's/^[ \t]*//'

Remover espaço/tabulação no final da linha
sed 's/[ \t]*$//'

Remover espaço/tabulação no inicio e no final da linha
sed 's/^[ \t]*//;s/[ \t]*$//'

Olhe http://aurelio.net/sed/ para outras dicas de sed em português.

groove

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 :)

#!/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