2009-10-06 26 views
1

J'ai un fichier texte, et chaque ligne est de la forme:Assistance Rechercher et remplacer Regex

TAB WORD TAB PoS TAB FREQ #

Word PoS Freq 
the Det 61847 
of Prep 29391 
and Conj 26817 
a Det 21626 
in Prep 18214 
to Inf 16284 
it Pron 10875 
is Verb 9982 
to Prep 9343 
was Verb 9236 
I Pron 8875 
for Prep 8412 
that Conj 7308 
you Pron 6954 

un de vous des assistants regex me aider de bien vouloir en isolant les mots du fichier? Je vais faire une recherche et remplacer dans TextPad, j'espère, et ce sera ça. Trouver plusieurs et remplace est bien. Une chose: remarquez que la recherche de "verbe" ferait également apparaître le mot "verbe", pas seulement la partie du discours, alors soyez prudent. À la fin je veux finir avec 1 mot par ligne.

Merci beaucoup!

Répondre

1

Je pense que Microsoft Excel peut vous aider à mieux que ...

Il suffit de copier le texte intégral sur Excel et il sera formaté comme table, alors allez-y et sélectionnez les cellules de la colonne appropriées pour le mot, enfin les copier sur le bloc-notes. Je parie que c'est le chemin le plus facile.

Si dans le cas Excel stocke toutes les valeurs dans une seule colonne, dans une colonne séparée extrait par le mot:

= trim (GAUCHE (C1, maxchar))

+0

Bonne idée ... vous oublient souvent les outils les plus faciles! – cksubs

1

Vous pouvez simplement utiliser awk pour enlever la première colonne, comme dans

awk '{print $1}' /path/to/filename 

Passer la première ligne en utilisant

awk 'NR!=1 {print $1}' /path/to/filename 
1

Il n'y a pas vraiment besoin d'utiliser une expression régulière pour cela. Par exemple, vous pouvez utiliser cut:

cut -f1 <inputfile 
1

Quelque chose comme \s*([a-zA-z]+)\s*([a-zA-z]+) retourneraient le mot et PoS en tant que groupes. Vous pouvez ensuite les utiliser dans l'instruction replace comme $ 1 et $ 2 pour produire comme vous le souhaitez.

Si vous ne voulez que la partie WORD, vous pouvez simplement utiliser $ 1 dans le remplacement.