Células de referência na coluna de .csv da linha de comando

0

Eu tenho uma coluna B em my.csv em que cada célula faz referência ao nome do arquivo de um documento em um diretório source_directory/ .

Eu gostaria de pegar cada um desses nomes para que eu possa usá-los como args para outros comandos do shell (como cp ).

O ideal seria substituir list.txt nos itens a seguir com o conteúdo da coluna B em my.csv

cp $(<list.txt) target_directory
    
por Meltemi 21.10.2015 / 23:53

2 respostas

1

Que tal isso:

for i in 'awk -F, '{print $2}' my.csv'; do cp "$i" target_directory; done

O comando awk é a chave; o -F, diz para usar uma vírgula como um separador de campo e, em seguida, pode imprimir o segundo campo.

Para pular a primeira linha:

for i in 'awk -F, 'NR==1{next} {print $2}' my.csv'; do cp "$i" target_directory; done
    
por 22.10.2015 / 00:56
0

Se você souber o número da coluna, tente:

cut -d, -f2 my.csv | {while read filename; do cp "$filename" target_dir/ ; done}

Pressupõe que você deseja a coluna nº 2 e não há vírgulas em strings entre aspas que precisem ser ignoradas.

    
por 23.10.2015 / 01:12