2011-01-18 3 views
0

Salut tout le monde, j'ai un fichier avec des informations comme ci-dessous. Je veux extraire les chiffres des dossiers. Quelqu'un peut-il me donner un awk ou un sed oneliner si possible? Peut-être mis sur un fichier? Cela m'aiderait vraiment. Je suis sur Ubuntu donc j'ai des utilitaires Linux.Comment extraire les données d'un fichier

Merci beaucoup.

<product_id>101747</product_id> 
<product_id>2847549</product_id> 
<product_id>149833</product_id> 
<product_id>123380</product_id> 
<product_id>66334</product_id> 
<product_id>66475</product_id> 
<product_id>123387</product_id> 
<product_id>6266040</product_id> 
<product_id>3480755</product_id> 
<product_id>6529572</product_id> 
<product_id>22852</product_id> 

Répondre

2

Python oneliner:

python -c "import re;print('\n'.join(re.findall('([0-9]+)',open('infile.txt').read())))" > outfile.txt 

changement infile.txt et outfile.txt.

sortie Exemple:

101747 
2847549 
149833 
123380 
66334 
66475 
123387 
6266040 
3480755 
6529572 
22852 
+0

Salut, merci pour la réponse. Ça a marché! Pourriez-vous s'il vous plaît expliquer en quelques mots comment il l'a extrait? Je suppose que si vous pouviez le décomposer ... re; print ('\ n'.join (re.findall (' ([0-9] +) ', open (' infile.txt '). Read()))) Merci beaucoup pour la réponse .... Maintenant, je peux revenir à mon travail !! – bcrawl

+1

'import re;' importe le module regex, 'print ('\ n'.join (...))' imprime chaque élément de la liste '...' joint par une nouvelle ligne et '...' est 're.findall ('([0-9] +)', open ('infile.txt'). read())' qui ouvre 'infile.txt' et lit tous les caractères en dehors. Enfin nous faisons une regex '[0-9] +' en extrayant tous les nombres créant la liste qui est ensuite jointe et imprimée. S'il vous plaît ne pas oublier d'accepter ma réponse si cela a fonctionné :) – orlp

+0

Merci beaucoup pour l'explication et toute l'aide. J'apprécie vraiment cela. C'était une intro merveilleuse pour les scripts Python pour moi. – bcrawl

Questions connexes