Usando o SED para cortar após o sétimo caractere de cada linha

3

Tentando cortar todos os caracteres após o sétimo em cada linha de um texto.

Eu inicialmente tentei isso:

sed 's/(.{7}).*//' TestText.txt 

Mas recebi esta resposta:

sed: 1: "s/(.{7}).*//":  not defined in the RE

Então tentei isso:

$ sed 's/./&#/7' TestText.txt 
Ballbou#nce
Latllma#tattjsdf
dsfase,#d,
adfadfj#jen
asdfjov#moeo
$ sed -e 's/#.*//' TestText.txt 
Ballbounce
Latllmatattjsdf
dsfase,d,
adfadfjjen
asdfjovmoeo

Mas tudo o que fez foi remover o # . Eu só quero remover qualquer caractere após o sétimo caractere.

    
por Phil 15.12.2015 / 14:23

1 resposta

8

Use sed com -r :

sed -r 's/(.{7}).*//' file

Ou escape dos parênteses:

sed 's/\(.\{7\}\).*//' file

Como alternativa, você também pode usar grep ( -E ativa expressões regulares estendidas, -o imprime apenas o padrão correspondente):

grep -oE '^.{7}' file

com awk :

awk '{print substr($0,1,7)}' file

E é claro que cut é feito apenas para esse tipo de trabalho:

cut -c1-7 file
    
por 15.12.2015 / 14:29