pt sed substitui a primeira ocorrência do padrão “space-tab”

0

Eu tenho alguns problemas ao remover a string entre o primeiro espaço \s e a primeira guia \t de um arquivo de texto (a guia deve ser mantida):

entrada de amostra:

col1_frame1 unimportant    a b    c

saída esperada para amostra:

col1_frame    a b    c

Eu tentei com sed 's/ .*\t/\t/' , mas recebi uma saída errada:

minha saída para amostra (usando o sed anterior):

col1_frame    c
    
por dovah 05.10.2016 / 21:31

1 resposta

5

É porque .* corresponde a qualquer coisa (como é o caractere curinga da expressão regular) e pode e será expandido o máximo possível até a última guia ser vista (e abrangendo quaisquer outras guias no meio). O que você quer é [^\t]* , que corresponderá a qualquer string que não contenha uma guia, então a combinação da sua chamada para sed deve ser assim: sed 's/ [^\t]*\t/\t/'

    
por 05.10.2016 / 21:38