2017-10-16 5 views
1

J'essaye d'obtenir les nombres qui sont entre deux deux-points et d'autres nombres dans un dossier.Comment trouver un nombre entre des nombres et des deux-points?

Exemple:

1234:12345678:1234 
1234:12345678:1234 
1234:12345678:1234 

Je veux que la sortie pour montrer tous les 12.345.678 de et rien d'autre.

Comme ceci:

12345678 
12345678 
12345678 

J'atteint cela en utilisant: (awk ou sed)

egrep -o "[0-9]{8}" file 

Le problème est que je besoin d'une solution différente de celle egrep -o

Je cherchai et essayé quelques choses mais sans succès.

Toute aide serait appréciée!

+0

Utiliser 'sed 's /: \:/\ 1/(* \.)' Fichier' - pour imprimer entre les de limiteurs' ':, en utilisant' Awk' peut être difficile ici s'il y a plus de 3 colonnes et si vous n'êtes pas sûr si la valeur sera toujours la 2ème colonne. Cela fonctionnera s'il y a plus de 3 colonnes avec différents de-limiteurs présents aussi – Inian

+0

@Inian Ce que cela fait est de supprimer les deux-points et d'afficher tous les nombres. Je veux seulement voir les 8 nombres. – xSulky

Répondre

0

Si le "numéro" est toujours 2ème colonne, vous pourriez faire avec awk:

awk -F: '{print $2}' file 
+0

Fonctionne parfaitement, merci! Et si ce n'est pas toujours la 2ème colonne mais qu'il y en a une aussi dans la 3ème? Donc, je voudrais voir les 8 numéros des lignes 1, 2 et 3. ligne 1 = 12345678: 1234: 1234, ligne deux = 1234: 12345678: 1234 et ligne trois = 1234: 1234: 12345678. Pas nécessaire mais j'aimerais bien le savoir aussi! :) – xSulky

+0

Si la colonne qui vous intéresse est la 3ème, changez simplement $ 2 à $ 3. Si la longueur de la colonne 2 doit être 8 alors vous pouvez faire: 'awk -F: '$ 2 && longueur ($ 2) == 8 {print $ 2}' fichier'. – usr

+0

C'est quelque chose d'intéressant, merci. Une idée de comment montrer toutes les 8 chaînes longues de nombre? N'importe quelle colonne. – xSulky

0

Pour la solution awk,

awk -F: '{print $2}' file 

Ou tout simplement utiliser cut pour le faire,

cut -d: -f2 file 
+0

Merci! Les deux solutions fonctionnent. Dire que je veux aussi les 8 nombres de cet exemple: 1234: 1234: 12345678 la commande ne fonctionnerait pas si je veux aussi que cela montre. Alors as-tu une idée de comment je peux le montrer? – xSulky

+0

awk -F: '{print $ 3}' fichier – CWLiu

+0

Oui cela fonctionne si je veux voir les numéros de la 3ème colonne. Je n'étais pas clair sur ce que je voulais dire. Dites que je veux voir toutes les 8 colonnes numérotées. Donc 1234: 1234: 12345678 mais aussi 1234: 12345678: 1234. Merci quand même! – xSulky

0

cela fonctionnerait-il?

awk -F':' '{print $2}' test > test results.txt 
+0

Je suppose que vous essayez de faire un fichier avec les résultats. Cela ne fonctionne pas pour moi et ne semble pas que c'est ce que j'essaie d'accomplir :). Ty! – xSulky

+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. - [De l'examen] (/ review/low-quality-posts/17639504) – purplepsycho