O que este comando sed está fazendo?

3

Alguém pode me explicar o que esse comando sed está tentando alcançar?

sed 's/^[[:space:]]*//;s/[[:space:]]*$//

Eu entendo que ele está pesquisando os caracteres do espaço em branco desde o início da linha, mas não consigo entender a parte que começa em //;s/[[:space:]]*$//

    
por Incognito 20.02.2012 / 12:36

2 respostas

12

Existem dois comandos s : sed pode ter uma lista de comandos separados por ponto e vírgula. Você poderia colocar a mesma coisa em um arquivo de script assim:

s/^[[:space:]]*//
s/[[:space:]]*$//

Além disso, você está analisando erroneamente o comando s : s não é pesquisa , é substituto : são necessários dois argumentos, a string para match e a string para substituí-lo por ( s/find/replace/ ).

Então, s/^[[:space:]]*// significa

s                (substitute)
/^[[:space:]]*/  (leading whitespace)
//               (with an empty string)

e o segundo comando s/[[:space:]]*$// significa substitui o espaço em branco à direita por uma string vazia .

    
por 20.02.2012 / 12:52
3

Tanto quanto eu sei, é apenas uma cadeia substituta. Primeiro, ele remove todos os espaços em branco iniciais por meio de s/^[[:space:]]// e passa a aplicar s/[[:space:]]$// para remover todos os espaços em branco finais.

    
por 20.02.2012 / 12:42

Tags