GNU/Linux >> Tutoriels Linux >  >> Linux

Commande unix rapide pour afficher des lignes spécifiques au milieu d'un fichier ?

Non, il n'y en a pas, les fichiers ne sont pas adressables en ligne.

Il n'y a pas de moyen en temps constant de trouver le début de la ligne n dans un fichier texte. Vous devez parcourir le fichier et compter les retours à la ligne.

Utilisez l'outil le plus simple/le plus rapide dont vous disposez pour faire le travail. Pour moi, en utilisant head gagne beaucoup plus de sens que grep , puisque ce dernier est beaucoup plus compliqué. Je ne dis pas "grep est lent", ce n'est vraiment pas le cas, mais je serais surpris qu'il soit plus rapide que head pour cette affaire. Ce serait un bogue dans head , en gros.


avec GNU-grep, vous pourriez simplement dire

grep --context=10 ...

# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3,  efficient on large files 

méthode 3 efficace sur les gros fichiers

moyen le plus rapide d'afficher des lignes spécifiques


J'ai trouvé deux autres solutions si vous connaissez le numéro de ligne mais rien d'autre (pas de grep possible) :

En supposant que vous ayez besoin des lignes 20 à 40,

sed -n '20,40p;41q' file_name

ou

awk 'FNR>=20 && FNR<=40' file_name

Lors de l'utilisation de sed il est plus efficace de quitter le traitement après avoir imprimé la dernière ligne que de poursuivre le traitement jusqu'à la fin du fichier. Ceci est particulièrement important dans le cas de fichiers volumineux et de lignes d'impression au début. Pour ce faire, le sed la commande ci-dessus introduit l'instruction 41q afin d'arrêter le traitement après la ligne 41 car dans l'exemple nous ne nous intéressons qu'aux lignes 20-40. Vous devrez remplacer le 41 par la dernière ligne qui vous intéresse, plus un.


Linux
  1. Comment extraire le fichier tar.gz sous Linux à l'aide de la ligne de commande

  2. Comment boucler sur les lignes d'un fichier ?

  3. Comment la commande Sed '1!g;h;$!d' inverse-t-elle le contenu d'un fichier ?

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

  5. Comment utiliser les lignes d'un fichier comme arguments d'une commande ?

Afficher le contenu d'un fichier dans la ligne de commande Linux

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

5 commandes pour afficher le contenu d'un fichier en ligne de commande Linux

Tutoriel Unix Sed :Impression de lignes de fichier à l'aide d'adresses et de modèles

Tutoriel Unix Sed :ajouter, insérer, remplacer et compter les lignes de fichiers

4 outils pour télécharger n'importe quel fichier en utilisant la ligne de commande sous Linux