Chat Unix à partir de ligne


40

Quel est le meilleur moyen de sortir d'un fichier à partir d'une ligne spécifique (grand nombre comme 70000). Quelque chose comme:

cat --line=70000 <file>

Réponses:


60

Jetez un coup d'œil à tail, plus précisément, c'est --lines = + N switch:

tail --lines=+100 <file>

Sensationnel. Je ne le savais même pas après l'avoir utilisé sur Linux pendant 8 ans! J'ai toujours utilisé un bash fn! Merci ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; linéno = expr $lineno - $2; tail -n $ lineno $ 1; }
secureBadshah Le

2
A noter que cela ne fonctionne pas sur Mountain Lion (Darwin Kernel Version 13.1.0). La variante de Mountain lion esttail -n
Kaushik Ghose de

22

Le moyen le plus évident est tail. La syntaxe peut être légèrement différente selon le système d'exploitation que vous utilisez:

tail -n +70000

Si vous ne pouvez pas vous rendre tailau travail, vous pouvez utiliser sed, mais cela risque de ralentir:

sed -pe '1,69999d'

tailfonctionnait parfaitement dans MinGW (sur un fichier texte de 600 Mo). Le temps d'exécution n'était que de quelques secondes (mais le fichier d'entrée aurait déjà été dans le cache de fichiers).
Peter Mortensen

2

Si, au lieu d’un numéro de ligne, vous devez commencer à répertorier la ligne contenant une donnée $phrase, essayez ce qui suit.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

Le -1000 listera en permanence le texte sur 1000 lignes maximum; vous pouvez changer cela au besoin. La sedcommande coupera les 4 premières lignes de la sortie, qui ont été automatiquement insérées par more, contenant une ligne vide, le message "... sautant" et les deux lignes précédant votre ligne de départ. Je suppose que cela peut varier en fonction de votre système.


2

Vous pouvez utiliser le paramètre NR avec la commande awk :

cat <file> | awk '{if (NR>=7000) print}'

2
Vous pouvez utiliser cette commande avec d'autres limites. À titre d'exemple: cat messages | awk '{if (NR>=7000 && NR <7003) print}'affiche uniquement les lignes 7000, 7001 et 7002.
Gefolge

-1

2
lien fascinant, mais il ne donne pas vraiment d’information qui s’applique à cette question, et votre tailsuggestion est la même que celle acceptée et d’autres réponses d’il ya des semaines. pourquoi prendre la peine de poster?
Quack Quichotte

Le lien est cassé -...can't find the server at www.scripterworld.com.
Peter Mortensen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.