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>..'
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?
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>..'
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.
Tags awk