Question Imprimer un fichier en ignorant les premières lignes X dans Bash


J'ai un très long fichier que je veux imprimer mais en sautant par exemple les premières lignes 1e6. Je regarde dans la page de manuel de chat mais je n'ai vu aucune option pour faire ceci. Je cherche une commande pour faire ceci ou un simple programme bash.


368
2018-03-03 02:19


origine


Réponses:


Vous aurez besoin de queue.

$ tail great-big-file.log
< Last 10 lines of great-big-file.log >

Si vous avez vraiment besoin de sauter un nombre particulier de lignes, utilisez

$ tail -n +<N+1> <filename>
< filename, excluding first N lines. >

Autrement dit, si vous voulez ignorer N lignes, vous commencez à imprimer la ligne N + 1. Exemple:

$ tail -n +11 /tmp/myfile
< /tmp/myfile, starting at line 11, or skipping the first 10 lines. >

Si vous voulez simplement voir le dernier nombre de lignes, omettez le "+":

$ tail -n <N> <filename>
< last N lines of file. >

597
2018-03-03 02:24



Si vous avez GNU tail disponible sur votre système, vous pouvez procéder comme suit:

tail -n +1000001 huge-file.log

C'est le + personnage qui fait ce que vous voulez. Pour citer la page de manuel:

Si le premier caractère de K (le nombre d’octets ou de lignes) est un   `+ ', imprime en commençant par le Kème élément depuis le début de chaque fichier.

Ainsi, comme indiqué dans le commentaire, mettre +1000001 commence à imprimer avec le premier élément après les 1 000 000 premières lignes.


80
2018-03-03 02:28



Le moyen le plus simple que j'ai trouvé pour supprimer les dix premières lignes d'un fichier:

$ sed 1,10d file.txt

64
2017-10-17 07:17



Une version moins détaillée avec AWK:

awk 'NR > 1e6' myfile.txt

Mais je recommanderais d'utiliser des nombres entiers.


21
2018-04-26 14:31



Juste pour proposer un sed alternative. :) Pour sauter le premier million de lignes, essayez |sed '1,1000000d'.

Exemple:

$ perl -wle 'print for (1..1_000_005)'|sed '1,1000000d'
1000001
1000002
1000003
1000004
1000005

13
2018-01-26 06:53



Si vous voulez voir les 10 premières lignes, vous pouvez utiliser sed comme ci-dessous:

sed -n '1,10 p' myFile.txt

ou si vous voulez voir des lignes de 20 à 30, vous pouvez utiliser:

sed -n '20,30 p' myFile.txt

12
2017-12-20 10:04



si vous voulez sauter les deux premières lignes
tail -n +3 <filename>

si vous voulez sauter la première ligne x
tail -n +$((x+1)) <filename> 


12
2017-07-09 18:10