GNU/Linux >> Tutoriels Linux >  >> Linux

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

Comment puis-je trouver la nième ligne d'un fichier dans la ligne de commande Linux ? Comment afficher le numéro de ligne x sur le numéro de ligne y ?

Sous Linux, il existe plusieurs façons d'obtenir le même résultat. L'impression de lignes spécifiques à partir d'un fichier ne fait pas exception.

Pour afficher la 13e ligne, vous pouvez utiliser une combinaison de tête et de queue :

head -13 file_name | tail +13

Ou, vous pouvez utiliser la commande sed :

sed -n '13p' file.txt

Pour afficher les numéros de ligne de 20 à 25, vous pouvez combiner les commandes de début et de fin comme ceci :

head -25 file_name | tail +20

Ou, vous pouvez utiliser la commande sed comme ceci :

sed -n '20,25p' lines.txt 

Une explication détaillée de chaque commande suit ensuite. Je montrerai également l'utilisation de la commande awk à cette fin.

Afficher des lignes spécifiques à l'aide des commandes head et tail

C'est ma façon préférée d'afficher les lignes de choix. Je le trouve plus facile à retenir et à utiliser.

Utilisez une combinaison de commande head et tail dans la fonction suivante le numéro de ligne x :

head -x file_name | tail +x

Vous pouvez remplacer x par le numéro de ligne que vous souhaitez afficher. Donc, disons que vous voulez afficher la 13ème ligne du fichier.

[email protected]:~$ head -13 lines.txt | tail +13
This is line number 13

Explication  :Vous savez probablement déjà que la commande head récupère les lignes d'un fichier depuis le début tandis que la commande tail récupère les lignes depuis la fin.

La partie "head -x" de la commande obtiendra les x premières lignes des fichiers. Il redirigera ensuite cette sortie vers la commande tail. La commande tail affichera toutes les lignes à partir de la ligne numéro x.

De toute évidence, si vous prenez 13 lignes à partir du haut, les lignes commençant par le numéro 13 jusqu'à la fin seront la 13e ligne. C'est la logique derrière cette commande.

Prenons maintenant notre combinaison de commandes de tête et de queue pour afficher plus d'une ligne.

Supposons que vous souhaitiez afficher toutes les lignes de x à y. Cela inclut également les xième et yième lignes :

head -y lines.txt | tail +x

Prenons un exemple pratique. Supposons que vous souhaitiez imprimer toutes les lignes de la ligne numéro 20 à 25 :

[email protected]:~$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25

Utiliser SED pour afficher des lignes spécifiques

La puissante commande sed offre plusieurs façons d'imprimer des lignes spécifiques.

Par exemple, pour afficher la 10ème ligne, vous pouvez utiliser sed de la manière suivante :

sed -n '10p' file.txt

Le -n supprime la sortie tandis que la commande p imprime des lignes spécifiques. Lisez ce guide SED détaillé pour l'apprendre et le comprendre en détail.

Pour afficher toutes les lignes de la ligne numéro x à la ligne numéro y, utilisez ceci :

[email protected]:~$ sed -n '3,7p' lines.txt 
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7

Utiliser AWK pour imprimer des lignes spécifiques à partir d'un fichier

La commande awk peut sembler compliquée et il y a sûrement une courbe d'apprentissage impliquée. Mais comme sed, awk est également assez puissant pour éditer et manipuler le contenu des fichiers.

[email protected]:~$ awk 'NR==5' lines.txt 
This is line number 5

NR désigne le 'numéro d'enregistrement actuel'. Veuillez lire notre guide détaillé des commandes AWK pour plus d'informations.

Pour afficher toutes les lignes de x à y, vous pouvez utiliser la commande awk de la manière suivante :

[email protected]:~$ awk 'NR>=20 && NR<=25' lines.txt 
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25

Il suit une syntaxe similaire à la plupart des langages de programmation.

J'espère que cet article rapide vous a aidé à afficher des lignes spécifiques d'un fichier dans la ligne de commande Linux. Si vous connaissez une autre astuce à cette fin, partagez-la avec le reste d'entre nous dans la section des commentaires.


Linux
  1. Comment enregistrer la sortie de la commande dans un fichier sous Linux

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

  3. Avec la commande "cat" de Linux, comment afficher uniquement certaines lignes par numéro ?

  4. Commande wc Linux

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

Coller la commande sous Linux (fusionner les lignes)

Comment imprimer des lignes dupliquées dans un fichier texte sous Linux

Comment mélanger les lignes dans un fichier sous Linux

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

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

Comment extraire le fichier Tar.xz sur la ligne de commande Linux