web-dev-qa-db-fra.com

Comment rechercher des lignes spécifiques sous Linux?

J'ai récemment reçu une erreur me disant qu'il y avait un problème avec la ligne 52. J'essaie de savoir quelle est la meilleure méthode pour trouver des lignes au lieu de les compter.

Dans Windows, j’utilisais souvent Notepad ++ , qui affichait les lignes directement à gauche, de sorte que les utilisateurs pouvaient facilement faire défiler jusqu’à la ligne spécifique recherchée - Cependant, cette option ne figure pas dans Linux.

Peut-être qu'une certaine application est nécessaire?


UPDATE: Je ne peux actuellement pas ouvrir de logiciel-store et le seul éditeur de texte dont je dispose est la valeur par défaut nano et gedit. Veuillez donc limiter vos réponses à des solutions qui ne nécessitent pas l’installation de logiciels.

** NOTE: ** Je ne cherche pas à trouver une 'chaîne' de quelque sorte. Je cherche à trouver rapidement la ligne NUMBER sur laquelle la chaîne apparaît.

4
dlundy1

Si vous recherchez une approche graphique, vous pouvez afficher les numéros de ligne dans l'éditeur de texte par défaut, gedit. Pour ce faire, allez dans Edition -> Préférences et cochez la case "Afficher les numéros de ligne".

Vous pouvez également passer à un numéro de ligne spécifique en utilisant Ctrl+I.

7
Chuck R

Créons un fichier de test.

$ seq 100 >file

Maintenant, affichons la ligne 52:

$ sed -n 52p file
52

Ou:

$ awk 'NR==52' file
52

Ou, si le fichier est ouvert dans vim, vous pouvez taper 52G pour passer à la ligne 52.

Utilisation de nano

Supposons que votre fichier s'appelle file.txt. Pour éditer le fichier dans nano avec le nombre de lignes, de colonnes et de caractères affiché, exécutez

nano -c file.txt

Voici à quoi ressemble nano avec le curseur à la ligne 7 d'un fichier de 21 lignes: enter image description here

8
John1024

Vous pouvez afficher le fichier avec less. Utilisez less -N pour afficher les numéros de ligne, tapez "52" à less pour accéder à la ligne 52. Voir man less.

Ou, vous pouvez ouvrir le fichier avec l'éditeur vim (tapez vim thefile), puis taper ":52" pour accéder à la ligne 52. Voir man vim

5
waltinator

Dans vi ou vim

:set nu active les numéros de ligne

:set nonu désactive les numéros de ligne

52gg va à la ligne 52

52G va aussi à la ligne 52

5
jasonrhaas

Salut tout le monde, je pense que beaucoup d'entre nous ont complètement pensé à ça. Tandis que je continuais à lire vos commentaires et réponses, je me suis rendu compte que l'éditeur de texte de base vous indique la ligne et la colonne sur lesquelles vous vous trouvez si vous regardez au bas de la fenêtre. : /

Je me sens idiot lol

1
dlundy1

Un bon outil pour le travail est grep. Avec grep -i -n 'string', vous pouvez rechercher une chaîne particulière et connaître la ligne sur laquelle elle se trouve.

Supposons que le compilateur Java me signale une erreur indiquant que, dans la ligne System.out.println("Hello World"), je n'ai pas de point-virgule ou quelque chose du genre.

Ce que je pourrais faire est de cat helloworld.Java | grep -i -n 'hello world'

Et cela me rendrait 7: System.out.println("Hello World!"), où 7: est le numéro de ligne avec le signe deux-points comme séparateur.

Alternativement, vous pouvez démarrer nano avec le curseur sur une ligne et une colonne particulières, comme suit nano +7,0 helloworld.Java (et qu’il s’agit d’une des premières options du man nano)

0