Então, a pergunta real é: alguém tem uma idéia de como remover M-BM-
caracteres especiais sem correr o risco de perder outros caracteres?
Eu tenho uma sequência de texto:
" . . ."
isso é
space dot space dot space dot
Estou tentando substituir toda a ocorrência dessa seqüência no arquivo de texto para
"..."
isso é
dot dot dot
Eu estava tentando fazer com sed:
sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots
Infelizmente, ele não altera nem um pouco o arquivo de entrada. Arquivo: https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots
Quando tento substituir a mesma string no editor de texto (eu uso o geany), ela é encontrada e substituída corretamente.
A única razão pela qual consigo pensar é que alguns (ou todos) desses espaços não são realmente espaços, mas algum caráter especial.
Alguém tem idéia de como encontrar e substituir essa string por sed (ou qualquer outra ferramenta de linha de comando)? Teste sua idéia no meu arquivo, pois o problema não é tão óbvio quanto parece - por isso perguntei.
Depois de usar o cat -A
myfile, parece problema que esses espaços não sejam espaços, mas M-BM-
caracteres especiais. Usar qualquer símbolo .
sugerido para pesquisa não é uma boa ideia, pois existe o risco de outros caracteres serem removidos.
fonte
echo
vez de criar um arquivo, pelo menos quando você cria um arquivo, você sabe que o shell não está interpretando nada e nem é eco.cat
- bastased
carregar o arquivo (conforme o exemplo do OP), mas não salvar em linha (remova-i
, para que você possa ver e testar a saída).cat -A sed-dots
pode ver que os "espaços" entre os pontos sãoM-BM-
caracteres especiais ... Não sei como eles entraram lá, mas precisam ser substituídos. Se você não pode direcioná-los bem, isso funciona:sed -r 's/(\s\..\..\.)/ dot dot dot/ig' sed-dots
Tente o seguinte para substituir todos os "." Para "."
Mas pelo ". . ." para "..."
fonte
Eu poderia usar seu arquivo quando o executei:
Isso funcionou sem uma etapa de conversão:
fonte