GNU/Linux >> Tutoriels Linux >  >> Linux

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

Le système d'exploitation Linux aime se vanter de sa puissance de calcul et de ses prouesses. Son approche algorithmique de choses comme le traitement de fichiers, en particulier dans le cadre de la gestion de fichiers, permet aux utilisateurs de Linux de franchir des étapes importantes dans leur quête de maîtrise des empreintes d'administration Linux.

Un aspect du traitement des fichiers sous l'environnement du système d'exploitation Linux que nous devons grandement prendre en compte est l'identification des lignes les plus longues dans un fichier modifiable pris en charge par Linux.

Implication pratique des longues lignes dans un fichier

Considérez le scénario où vous travaillez dans une entreprise ou vous avez affaire à un projet qui traite d'énormes fichiers journaux. Ces fichiers peuvent être rendus sous forme de lignes de texte uniques alors qu'en réalité, ils peuvent encapsuler des milliers de documents JSON.

Si la taille de ces lignes de texte est très/anormalement longue, il peut être nécessaire de les traiter via un serveur proxy pour rediriger correctement le(s) fichier(s) vers un serveur de destination comme un serveur de recherche élastique.

Cependant, des étapes aussi minutieuses pour le traitement des fichiers peuvent entraîner des erreurs de traitement de fichiers involontaires alors qu'en réalité, vous n'avez affaire qu'à des lignes très longues dans vos fichiers. Diagnostiquer une telle erreur est impossible sans connaître la menace en jeu.

Ce didacticiel décrit les étapes nécessaires pour identifier les lignes les plus longues dans un fichier ciblé sur un environnement de système d'exploitation Linux.

Énoncé du problème

Pour rendre cet article plus amusant et engageant, nous allons créer un fichier texte de référence contenant plusieurs lignes différentes et implémenter plus tard des solutions Linux valides pour trouver les lignes les plus longues.

$ sudo nano sample_file.txt

Nous nous efforcerons d'identifier les lignes les plus longues du fichier ci-dessus (sample_file.txt ) via des commandes Linux utiles.

1. Trouver la ligne la plus longue dans un fichier à l'aide de la commande Awk

Idéalement, nous pourrions préfixer toutes les lignes du fichier ci-dessus en utilisant un awk à une ligne pour déterminer leurs longueurs exactes, comme illustré ci-dessous.

$ awk '{printf "%2d| %s\n",length,$0}' sample_file.txt  

Selon la capture d'écran ci-dessus, 73 est la plus grande longueur de ligne.

Imprimer la ligne la plus longue d'un fichier à l'aide des commandes wc et grep

En combinant ces deux commandes, vous pouvez utiliser regex de la commande grep et max-line-length de la commande wc. Les wc la commande prend le -L option de commande pour déterminer la longueur maximale de la ligne, comme illustré ci-dessous.

$ grep -E "^.{$(tr '\t' ' '

La commande ci-dessus doit imprimer les lignes les plus longues du fichier sample_file.txt .

Comme nous avions deux lignes identiques avec la plus grande longueur de ligne de 73 , la commande ci-dessus a imprimé les deux lignes. S'il n'y avait qu'une seule ligne avec la plus grande longueur de ligne de 73, seule cette ligne serait imprimée.

Nous sommes maintenant à l'aise pour trouver la ou les lignes les plus longues dans un fichier sous Linux.


Linux
  1. Comment trouver un fichier sous Linux

  2. Linux – Comment trouver la date de création du fichier ?

  3. Comment ajouter plusieurs lignes à un fichier ?

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

  5. Comment compter le nombre de lignes dans un fichier sous Linux (exemples de commandes wc et nl)

Autorisations Linux - Comment trouver les autorisations d'un fichier

Comment mélanger les lignes dans un fichier sous Linux

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

Comment trouver des fichiers basés sur l'horodatage sous Linux

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

Comment trouver une adresse IP dans la ligne de commande Linux