2016-12-23 1 views
0

J'ai trouvé quelques messages ici suggérant des solutions en utilisant awk et sed, mais aucun d'entre eux semble faire le travail. Soit la ligne entière est supprimée, soit rien n'est supprimé. Je ne suis pas non plus en ligne de commande et mes connaissances sont limitées, alors j'ai décidé de demander de l'aide ici. Peu importe la solution, que ce soit awk, grep, sed ... Honnêtement, je ne peux pas faire de différence dans ce cas, donc ce sera tout ce que vous ressentez dans ce cas.Comment supprimer un mot d'un fichier texte contenant X nombre de caractères?

Ce que j'est plusieurs fichiers avec quelques millions de lignes, et les fichiers/lignes ressembler à quelque chose comme ceci:

50somethingcharactergibberish shortrword 
50somethingcharactergibberish shortrword 
50somethingcharactergibberish shortrword 
50somethingcharactergibberish shortrword 
50somethingcharactergibberish shortrword 
50somethingcharactergibberish shortrword 

Et cela vaut pour plusieurs millions de lignes. Ce que j'ai besoin de faire, c'est d'enlever le 50somethingcharactergibberish et ne laisser que le mot court. Le problème est aussi qu'il n'y a pas de modèle, le mot long en question commence parfois par une lettre, et parfois par un nombre. Donc je suppose que je devrai compter les personnages par la suite.

+0

Y a-t-il toujours deux mots de ce genre dans toutes les lignes du fichier? – Inian

+0

Merci pour votre réponse Inian. Oui, il n'y a que les mots sur chaque ligne. Il y a un espace entre les sapins et le deuxième mot. Sinon, la même chose des millions de fois. – mrBlob

Répondre

0

Le plus minime awk qui pourrait fonctionner pour vous est quelque chose comme: -

awk '!($1="")' million-line-file 
+0

Merci beaucoup Inian! C'était exactement ce que je cherchais :) J'ai accepté votre réponse, mais elle n'est pas marquée car j'ai une mauvaise réputation. Mais comme je l'ai dit, c'était la solution que je cherchais. Merci encore! – mrBlob

+0

@mrBlob: lire à travers [Qu'est-ce que cela signifie quand une réponse est "acceptée"?] (Http://stackoverflow.com/help/accepted-answer) – Inian

+1

Merci Inian, apparemment j'ai voté au lieu de l'accepter. C'est accepté maintenant! :) – mrBlob

0

awk est surpuissant pour cet essai cut

cut -f2 -d ' ' 2col.list > 2ndcol.list 

dit cut le second champ -f2 considérant un espace pour être délimiteur de zone -d ' ' pour chaque ligne du fichier d'entrée et rediriger ce second champ dans le fichier de sortie