Como cortar do primeiro caractere para o caractere -7 no awk?

5

Eu tenho um arquivo com várias linhas.

Qual a segunda coluna é o user_id , mas os últimos sete números são números aleatórios.

Ele precisa ser cortado para obter o ID autêntico.

Então, o que preciso é obter o 1st character to the -7 character da segunda coluna de cada linha.

Eu pesquisei substr function do awk, parece que não posso lidar com esse trabalho diretamente.

Então, como cortar do primeiro caractere para o caractere -7 no awk?

    
por Zen 05.03.2015 / 08:55

2 respostas

1

awk '{ print substr($2,1,length($2)-7) }'

Se o comprimento ($ 2) < = 7, você não terá saída. Deve haver um comprimento mínimo? Se assim for, você pode definir uma função min () no awk:

awk 'function min(a,b){return a<b?b:a}  ..<rest of code>..'
    
por 15.04.2015 / 16:04
0

Supondo que as operações precisam ser feitas na segunda coluna (aparar os últimos 7 caracteres):

[whatever command you use to open your file] | awk '{ print $2 }' | rev | cut -c 8- | rev

Aqui está o detalhamento:

awk '{ print $2 }' Obtém a segunda coluna do arquivo

rev prepara a string (inverte). Eu não acho que cut possa remover os últimos N caracteres, então isso remove os primeiros N caracteres da string invertida.

cut -c 8- Remove os primeiros 7 caracteres da string. (descoberto por tentativa e erro, precisa de verificação)

rev inverte a cadeia processada. Isso exibe a string original, mas sem a coisa de 7 caracteres.

    
por 17.03.2015 / 16:07

Tags