Sed substitui espaço com espaço de barra invertida (Bash)

1

Estou tentando substituir cada espaço neste arquivo de texto por um espaço de barra invertida.

cat prefixedfiles.txt | sed "s![[:space:]]! \!g"

Original: A a a

Resultado:     A\ a\ a

    
por Ninsto 18.04.2017 / 17:45

2 respostas

1
sed 's! !\ !g' prefixedfiles.txt

Poucos problemas corrigidos:

  • ' em vez de " impede bash de interpretar o símbolo ! e permite referir a barra invertida como \ ;
  • [[:space:]] corresponde mais que apenas espaço; você pode querer ou não, eu usei o espaço normal;
  • cat é supérfluo aqui; sed pode pegar o nome do arquivo como um argumento (e mesmo que não pudesse, a sintaxe sed < file.txt ainda é melhor que cat file.txt | sed ).
por 18.04.2017 / 18:50
0

Escape o caractere de barra invertida.

cat prefixedfiles.txt | sed "s![[:space:]]! \!g"

sed manual 5.3 Overview of basic regular expression syntax

\char
Matches char, where char is one of $, *, ., [, \, or ^. Note that the only C-like backslash sequences that you can portably assume to be interpreted are \n and \; in particular \t is not portable, and matches a ‘t’ under most implementations of sed, rather than a tab character.

    
por 18.04.2017 / 18:47

Tags