GNU/Linux >> Tutoriels Linux >  >> Linux

Comment afficher certaines lignes d'un fichier texte sous Linux ?

Solution 1 :

sed -n '10000000,10000020p' filename

Vous pourrez peut-être accélérer un peu comme ceci :

sed -n '10000000,10000020p; 10000021q' filename

Dans ces commandes, l'option -n provoque sed pour "supprimer l'impression automatique de l'espace du motif". Le p commande "print[s] the current pattern space" et le q commande "Quitter immédiatement le script sed sans traiter d'autre entrée..." Les guillemets proviennent du sed man page.

Au fait, votre commande

tail -n 10000000 filename | head 10

commence à la dix millionième ligne à partir de la fin du fichier, alors que votre commande "milieu" semblerait commencer au dix millionième depuis le début ce qui équivaudrait à :

head -n 10000010 filename | tail 10

Le problème est que pour les fichiers non triés avec des lignes de longueur variable, tout processus devra parcourir le fichier en comptant les nouvelles lignes. Il n'y a aucun moyen de raccourcir cela.

Si, toutefois, le fichier est trié (un fichier journal avec des horodatages, par exemple) ou a des lignes de longueur fixe, vous pouvez rechercher dans le fichier en fonction d'une position d'octet. Dans l'exemple de fichier journal, vous pouvez effectuer une recherche binaire pour une plage de temps comme le fait mon script Python ici*. Dans le cas du fichier à longueur d'enregistrement fixe, c'est très simple. Vous cherchez juste linelength * linecount caractères dans le fichier.

Solution 2 :

J'ai découvert l'utilisation suivante de sed

sed -n '10000000,+20p'  filename

J'espère que c'est utile à quelqu'un !

Solution 3 :

C'est la première fois que je publie ici! Quoi qu'il en soit, celui-ci est facile. Supposons que vous souhaitiez extraire la ligne 8872 de votre fichier appelé file.txt. Voici comment procéder :

chat -n fichier.txt | grep '^ *8872'

Maintenant, la question est de trouver 20 lignes après cela. Pour ce faire, vous faites

chat -n fichier.txt | grep -A 20 '^ *8872'

Pour les lignes autour ou avant, voir les drapeaux -B et -C dans le manuel de grep.


Linux
  1. Comment ajouter du texte à la fin du fichier sous Linux

  2. Comment afficher des lignes spécifiques d'un fichier dans la ligne de commande Linux

  3. Comment compter les lignes d'un fichier sous UNIX/Linux

  4. Comment distinguer le binaire des fichiers texte sous Linux

  5. Comment supprimer les retours à la ligne d'un fichier texte ?

Comment mélanger les lignes dans un fichier sous Linux

Comment extraire des adresses e-mail d'un fichier texte sous Linux

Comment ajouter du texte au début du fichier sous Linux

Comment inverser les lignes d'un fichier par caractère sous Linux

Comment supprimer les caractères (^M) d'un fichier sous Linux

Comment trouver la ou les lignes les plus longues dans un fichier sous Linux