Como cortar (selecionar) um campo da contagem de linhas de texto do final?

26

Eu sei como selecionar um campo de uma linha usando o comando cut. Por exemplo, dados os seguintes dados:

a,b,c,d,e
f,g,h,i,j
k,l,m,n,o

Este comando:

cut -d, -f2 # returns the second field of the input line

Retorna:

b
g
l

Minha pergunta: Como posso selecionar o segundo campo contando a partir do final? No exemplo anterior, o resultado seria:

d
i
n
    
por ssn 13.02.2013 / 15:30

2 respostas

41

Inverta a entrada antes e depois de cut com rev :

<infile rev | cut -d, -f2 | rev

Saída:

d
i
n
    
por 13.02.2013 / 15:31
9

Tente fazer isso com :

awk -F, '{print $(NF-1)}' file.txt

Ou usando :

perl -F, -lane 'print $F[-2]' file.txt

Ou usando (obrigado manatwork):

ruby -F, -lane 'print $F[-2]' file.txt

Ou usando bash (obrigado manatwork):

while IFS=, read -ra d; do echo "${d[-2]}"; done < file.txt

Ou usando :

cat file.txt |
python -c $'import sys\nfor line in sys.stdin:\tprint(line.split(",")[-2])'
    
por 13.02.2013 / 15:32