Extraction de colonnes

Fermé
sky - 8 mai 2010 à 23:17
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 12 mai 2010 à 13:33
Bonjour,

Dans un fichier j'ai un tableau de 100000 colonnes et 800 lignes. Je voudrai extraire de ce fichier 500 colonnes. Les numéros des colonnes à extraire sont mises dans un autre fichier.
J'ai essayé plusieurs commande avec sed, ou encore awk mais je n'y suis pas arrivée.
Est ce que vous savez s'il est possible de faire cela avec le terminal de linux?

Je vous remercie par avance.

3 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
9 mai 2010 à 07:50
hello
soit le fichier num qui contient les N° de colonnes à afficher, 1 par ligne et le fichier fic qui contient les 100000 colonnes:
$ awk 'BEGIN{while("cat num"|getline)x[n++]=$1} ; {for(i=0;i<n;i++)printf $x[i] OFS; print ""}' fic > resultat
0
salut,

merci beaucoup pour ta réponse. J'ai essayé ton code mais il me dit qu'il y a une erreur avec awk: program limit exceeded : maximum number of field = 32767.

Je pense que c'est donc les 100000 colonnes qu'il n'apprécie pas...

est ce qu'il existe une autre méthode??

Merci encore.
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
12 mai 2010 à 13:33
effectivement, awk est limité à 32K champs, utilise gawk à la place
$ seq -s " " 1 200000 > a
$ gawk -v c=40001 -v c2=100002 -v c3=199998 '{print NF, $c, $c2, $c3}' a
200000 40001 100002 199998
$
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
12 mai 2010 à 10:52
Salut,

Essaie comme ça
~ $ cat num
2
3

~ $ cat colonne.txt
nom prenom age sexe
AAA aaa 10 1
BBB bbb 30 2

~ $ perl -F'\s+' -lane  '@num=qx/cat num/;print "@F[@num]"' colonne.txt
age sexe
10 1
30 2

~ $

0