Recuperando o último elemento no csv

0

Eu tenho um arquivo CSV como abaixo

input.csv
1,2,3
4,5,6,7,8
9,10,11,12

A partir disso, quero obter

output.csv
3
8
12

Eu sei que para uma coluna de tamanho fixo particular, então eu posso usar

cut -d \, -f 1 >output.csv

Como a posição desta coluna varia, não consegui descobrir. Qualquer ajuda é apreciada. Obrigado antecipadamente.

    
por joker21 21.10.2016 / 12:29

3 respostas

4

Uma solução é:

awk -F "," '{print $NF}' input.csv > output.csv
    
por 21.10.2016 / 12:35
2

awk -F, '{print $NF}' é mais adequado neste caso, como já foi fornecido


Outras maneiras:

Você pode inverter as linhas, obter a primeira coluna e, em seguida, inverter novamente

$ rev input.csv | cut -d, -f1 | rev
3
8
12


Usando sed

$ sed 's/.*,\(.*\)//' input.csv 
3
8
12


Usando grep e pcre

$ grep -oP '.*,\K.*' input.csv  
3
8
12
    
por 21.10.2016 / 12:39
0

Eu recomendaria usar algo que possa realmente analisar arquivos CSV, caso o último campo contenha vírgulas, por exemplo,

13,14,15,"this, here"

O último campo é this, here , não here"

Eu usaria python, que você poderia colocar em um script ou você poderia falsificar o script na linha de comando como

python <(cat <<EOSCRIPT
import sys
import csv
f = csv.reader(open(sys.argv[1]))
for row in f:
  print row[-1]
EOSCRIPT
) input.csv > output.csv 
    
por 21.10.2016 / 14:30