Substituir caracteres selecionados

0

Como é possível substituir apenas o primeiro caractere [:space:] em cada linha de um arquivo com \t usando sed ?

Input: 
AC 12 45
DC 56 89

Expected output:
AC    12 45
DC    56 89

(algo como sed "s/[:space]/'\t'/g" , mas sem afetar os outros espaços da linha)

    
por dovah 11.07.2014 / 14:30

2 respostas

3

Para aplicar uma substituição apenas à primeira correspondência em cada linha, basta remover o modificador g (global), por exemplo,

sed 's/ /\t/' input

(a classe POSIX [[:space:]] é um exagero para sua exigência, pois inclui o caractere de tabulação).

FYI a versão GNU de sed tem alguns recursos adicionais, por exemplo especificando qual correspondência deve ser substituída explicitamente por um número, por exemplo,

$ sed 's/ /\t/1' input
AC      12 45
DC      56 89
$ sed 's/ /\t/2' input
AC 12   45
DC 56   89
    
por 11.07.2014 / 14:37
1

Você deve remover g :

sed 's/ /\t/' file

sem g , sed corresponde apenas à primeira ocorrência na linha.

    
por 11.07.2014 / 14:37

Tags