Qual é a maneira mais fácil de acrescentar ';' até o final das linhas que contêm o caractere ':'?

2

Eu tenho um arquivo de texto cujo conteúdo é como:

body
    font-size: 12px
    color: blue

td
    font-size: 14px

...

Eu quero acrescentar ; às linhas que contêm : , então o conteúdo será:

body
    font-size: 12px;
    color: blue;

td
    font-size: 14px;

...

Qual é a maneira mais fácil de fazer isso no linux?

    
por Freewind 20.07.2011 / 06:25

3 respostas

3

Use a substituição de expressão regular. Muitos editores suportam expressões regulares, incluindo o Vim.

Veja como fazer isso a partir da linha de comando, usando sed (Stream EDitor):

sed -i -e "s/.*:.*/&;/" INPUT_FILE.css

Algumas versões do sed não suportam edição no local (escrevendo o arquivo de saída no arquivo de entrada):

sed -e "s/.*:.*/&;/" INPUT_FILE.css > OUTPUT_FILE.css

Explicação:

sed             invoke Stream EDitor commmand line tool
-i              edit in-place
-e              the next string will be the regular expression: s/.*:.*/&;/
INPUT_FILE.css  the name of your text file

A expressão regular (RegEx) é explicada em detalhes:

s   RegEx command indicates substitution
/   RegEx delimiter: separates command and match expression
.*  any string followed by...
:   a colon character followed by...
.*  any string
/   RegEx delimiter: separates match expression and replacement expression
&   RegEx back reference, entire string that was matched by match expression
;   the semicolon you wish to add
/   RegEx delimiter: ends replacement expression
    
por 20.07.2011 / 06:57
3

No Vim, ou qualquer outro editor com suporte decente para expressões regulares

:%s/\(:.*\)$/;/
    
por 20.07.2011 / 06:51
0

Você pode usar o Vim no modo Ex:

ex -sc 'g/:/s/$/;/' -cx file
  1. g pesquisa global

  2. s substituto

  3. $ fim da linha

  4. x salvar e fechar

por 17.04.2016 / 00:11