Supposons que j'ai un fichier avec les numéros suivants: alors je veux obtenir spécifique (dire n = 4) les premiers numéros du fichier compte tenu des duplicats comme un.
Par conséquent, la sortie devrait être comme celle-ci p>
3 Réponses :
Ceci peut être fait comme suit: p>
Vous pouvez faire comme ça: Mind the Double citations code> Pour évaluer l'expression à l'intérieur de citations. P > p>
Cela fonctionne mais avec des chiffres triés. Si les chiffres ne sont pas triés dans l'ordre que le résultat ne sont pas souhaités. J'ai inclus la commande de tri comme ceci, mais cela donne une erreur. SED "/ fichier de tri de chat1 | UNIQ | SED '4Q; d' code> / q" fichier1
Essayez comme ça - sed "/` filet chat1 | Trier | Uniq | SED '4Q; d'`/ q" fichier1 code>
Il y a aussi un problème si j'ajoute plus 127. Maintenant, mon entrée devient 123 123 125 126 126 127 127 128 130 131 132 133 134 Mais la sortie est de 123 123 125 126 126 127 au lieu de 123 123 125 126 126 127 127
Je ne sais pas s'il y a une meilleure solution, mais vous pouvez faire correspondre la 5ème ligne au lieu de 4ème, puis supprimer la dernière ligne comme SED "/` chat file1 | Trier | Uniq | SED '5Q; / q "file1 | sed '$ d' code>
@Manks a beaucoup pour aider. Pouvez-vous me dire comment puis-je obtenir les 4 matchs suivants, comme ceci, jusqu'à ce que je atteigne la fin du fichier. Je veux dire si j'ai une longue liste de nombres que je reçois les quatre premiers numéros souhaités à l'aide de SED "/ Fichier CAT1 | Trier | Uniq | SED '4Q; D' code> / q" File1. Ensuite, comment je reçois le numéro souhaité suivant et ainsi de suite. Enfin, sinon exactement 4 chiffres sont laissés, alors comment puis-je y faire face.
Hypothèses:
Trier code> me font penser que les données ne peuvent pas être triées li>
- op veut tirer le
xth code> via YTH code> (basé sur le tri numérique); Question originale demande 4 premiers code> des données avec la réponse souhaitée figurant sur Afficher les plus petits numéros code> 4 CODE> les plus petits (1ème au 4ème numéros); Commentaire supplémentaire de OP demande à la recherche de Suivant 4 correspondances CODE> Donc, je regarde donc une solution générale pour tirer xth code> via YTH li>
- La sortie souhaitée doit conserver l'ordre d'origine des données d'entrée li>
ul>
Quelques données d'échantillon: P>
$ x=5 y=8
$ sort -un numbers.dat | sed -n "${x},${y}p" > numbers.grep
$ cat numbers.grep
128
130
131
132
$ grep -f numbers.grep numbers.dat
128
130
131
132
$ x=9 y=20
$ sort -un numbers.dat | sed -n "${x},${y}p" > numbers.grep
$ cat numbers.grep # sorted list of numbers we're interested in
133
134
200
201
202
203
$ grep -f numbers.grep numbers.dat
200 # keep in mind this is the order in which the data appears in the source (one of the assumptions)
202
201
203
133
134
Les chiffres sont-ils un par ligne, tous en une ligne ou peuvent se propager plusieurs lignes?
Avez-vous essayé quelque chose? Cherché ? À quel moment avez-vous échoué?
Qu'attendez-vous comme sortie si
n = 4 code> et
127 code> existe 2 fois plus de fois dans le fichier? Vous arrêtez votre sortie avec un seul
127 code> ou imprimez-vous toutes les occurrences de
127 code>? L'entrée sera-t-elle toujours triée ou si l'un des premiers numéros code> NTH code> apparaîtra plus loin dans le fichier (c.-à-d. Avons-nous besoin de rechercher dans l'ensemble du fichier pour toutes les occurrences b> de la Premier
n code> nombres distincts)?
@ Dash-O & Gilles Quot, j'ai des chiffres un par ligne. , J'ai essayé de trier "file1.dat" | UNIQ -C Mais elle reçoit un nombre de survenue de chaque numéro. Je veux la sortie comme je l'ai mentionnée ci-dessus.
@ markp-fuso oui j'ai besoin de toutes les occurrences de 127