Inverta a entrada antes e depois de cut
com rev
:
<infile rev | cut -d, -f2 | rev
Saída:
d
i
n
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
Tente fazer isso com awk :
awk -F, '{print $(NF-1)}' file.txt
Ou usando perl :
perl -F, -lane 'print $F[-2]' file.txt
Ou usando ruby (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 python :
cat file.txt |
python -c $'import sys\nfor line in sys.stdin:\tprint(line.split(",")[-2])'
Tags text-processing shell cut