GNU/Linux >> Tutoriels Linux >  >> Linux

12 commandes utiles pour filtrer le texte pour des opérations de fichiers efficaces sous Linux

Dans cet article, nous passerons en revue un certain nombre d'outils de ligne de commande qui agissent comme des filtres sous Linux. Un filtre est un programme qui lit l'entrée standard, effectue une opération dessus et écrit les résultats sur la sortie standard.

Pour cette raison, il peut être utilisé pour traiter des informations de manière puissante, comme la restructuration de la sortie pour générer des rapports utiles, la modification de texte dans des fichiers et de nombreuses autres tâches d'administration système.

Cela dit, voici quelques-uns des filtres de fichiers ou de texte utiles sous Linux.

1. Awk Commande

Mauvais est un remarquable langage d'analyse et de traitement de modèles, il peut être utilisé pour créer des filtres utiles sous Linux. Vous pouvez commencer à l'utiliser en lisant notre série Awk de la partie 1 à la partie 13.

De plus, lisez également le awk page de manuel pour plus d'informations et d'options d'utilisation :

$ man awk

2. Commande Sed

sed est un puissant éditeur de flux pour filtrer et transformer du texte. Nous avons déjà écrit deux articles utiles sur sed, que vous pouvez parcourir ici :

  1. Comment utiliser la commande GNU "sed" pour créer, modifier et manipuler des fichiers sous Linux
  2. 15 trucs et astuces utiles pour la commande "sed" pour les tâches quotidiennes d'administration du système Linux

La page de manuel sed a ajouté des options de contrôle et des instructions :

$ man sed

3. Commandes Grep, Egrep, Fgrep, Rgrep

Ces filtres produisent des lignes correspondant à un motif donné. Ils lisent les lignes d'un fichier ou d'une entrée standard et impriment toutes les lignes correspondantes par défaut sur la sortie standard.

Remarque  :Le programme principal est grep, les variations sont simplement les mêmes que l'utilisation d'options grep spécifiques comme ci-dessous (et elles sont toujours utilisées pour la compatibilité descendante) :

$ egrep = grep -E
$ fgrep = grep -F
$ rgrep = grep -r  

Voici quelques commandes grep de base :

[email protected] ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:

[email protected] ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:

Vous pouvez en savoir plus sur Quelle est la différence entre Grep, Egrep et Fgrep sous Linux ?.

4. commande principale

tête est utilisé pour afficher les premières parties d'un fichier, il affiche les 10 premiers lignes par défaut. Vous pouvez utiliser le -n num flag pour spécifier le nombre de lignes à afficher :

[email protected] ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

[email protected] ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

Apprenez à utiliser la commande head avec les commandes tail et cat pour une utilisation efficace sous Linux.

5. Commande queue

queue sort les dernières parties (10 lignes par défaut) d'un fichier. Utilisez le -n commutateur num pour spécifier le nombre de lignes à afficher.

La commande ci-dessous affichera les 5 derniers lignes du fichier spécifié :

[email protected] ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

De plus, queue a une option spéciale -f pour surveiller les modifications d'un fichier en temps réel (en particulier les fichiers journaux).

La commande suivante vous permettra de surveiller les modifications dans le fichier spécifié :

[email protected] ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Lisez la queue page de manuel pour une liste complète des options d'utilisation et des instructions :

$ man tail

6. Commande de tri

trier permet de trier les lignes d'un fichier texte ou de l'entrée standard.

Ci-dessous le contenu d'un fichier nommé domains.list :

[email protected] ~ $ cat domains.list
tecmint.com
tecmint.com
news.tecmint.com
news.tecmint.com
linuxsay.com
linuxsay.com
windowsmint.com
windowsmint.com

Vous pouvez exécuter une simple commande de tri pour trier le contenu du fichier comme suit :

[email protected] ~ $ sort domains.list
linuxsay.com
linuxsay.com
news.tecmint.com
news.tecmint.com
tecmint.com
tecmint.com
windowsmint.com
windowsmint.com

Vous pouvez utiliser le tri commande à bien des égards, parcourez certains des articles utiles sur la commande de tri comme suit :

  1. 14 exemples utiles de la commande "sort" de Linux – Partie 1
  2. 7 exemples intéressants de commandes de tri Linux – Partie 2
  3. Comment rechercher et trier des fichiers en fonction de la date et de l'heure de modification
  4. Comment trier la sortie de la commande "ls" par date et heure de dernière modification

7. Commande unique

unique est utilisée pour signaler ou omettre les lignes répétées, elle filtre les lignes de l'entrée standard et écrit le résultat sur la sortie standard.

Après avoir exécuté sort sur un flux d'entrée, vous pouvez supprimer les lignes répétées avec uniq comme dans l'exemple ci-dessous.

Pour indiquer le nombre d'occurrences d'une ligne, utilisez le -c option et ignorer les différences de casse lors de la comparaison en incluant le -i choix :

[email protected] ~ $ cat domains.list
tecmint.com
tecmint.com
news.tecmint.com
news.tecmint.com
linuxsay.com
linuxsay.com
windowsmint.com

[email protected] ~ $ sort domains.list | uniq -c 
2 linuxsay.com
2 news.tecmint.com
2 tecmint.com
1 windowsmint.com 

Lisez le uniq page de manuel pour plus d'informations sur l'utilisation et les drapeaux :

$ man uniq

8. Commande fmt

fmt simple formateur de texte optimal, il reformate les paragraphes dans le fichier spécifié et imprime les résultats sur la sortie standard.

Voici le contenu extrait du fichier domain-list.txt :

1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

Pour reformater le contenu ci-dessus en une liste standard, exécutez la commande suivante avec -w switch est utilisé pour définir la largeur de ligne maximale :

tecmint[email protected] ~ $ cat domain-list.txt 
1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

[email protected] ~ $ fmt -w 1 domain-list.txt
1.tecmint.com 
2.news.tecmint.com 
3.linuxsay.com 
4.windowsmint.com

9. Commande pr

pr La commande convertit les fichiers texte ou l'entrée standard pour l'impression. Par exemple sur Debian systèmes, vous pouvez répertorier tous les packages installés comme suit :

$ dpkg -l

Pour organiser la liste en pages et colonnes prêtes à être imprimées, lancez la commande suivante.

[email protected] ~ $ dpkg -l | pr --columns 3 -l 20  

2017-01-06 13:19                                                  Page 1


Desired=Unknown/Install ii  adduser		ii  apg
| Status=Not/Inst/Conf- ii  adwaita-icon-theme	ii  app-install-data
|/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor
||/ Name		ii  alsa-base		ii  apt
+++-=================== ii  alsa-utils		ii  apt-clone
ii  accountsservice	ii  anacron		ii  apt-transport-https
ii  acl			ii  apache2		ii  apt-utils
ii  acpi-support	ii  apache2-bin		ii  apt-xapian-index
ii  acpid		ii  apache2-data	ii  aptdaemon
ii  add-apt-key		ii  apache2-utils	ii  aptdaemon-data


2017-01-06 13:19                                                  Page 2


ii  aptitude		ii  avahi-daemon	ii  bind9-host
ii  aptitude-common	ii  avahi-utils		ii  binfmt-support
ii  apturl		ii  aview		ii  binutils
ii  apturl-common	ii  banshee		ii  bison
ii  archdetect-deb	ii  baobab		ii  blt
ii  aspell		ii  base-files		ii  blueberry
ii  aspell-en		ii  base-passwd		ii  bluetooth
ii  at-spi2-core	ii  bash		ii  bluez
ii  attr		ii  bash-completion	ii  bluez-cups
ii  avahi-autoipd	ii  bc			ii  bluez-obexd

.....

Les drapeaux utilisés ici sont :

  1. --column définit le nombre de colonnes créées dans la sortie.
  2. -l spécifie la longueur de la page (la valeur par défaut est de 66 lignes).

10. Commande tr

Cet outil traduit ou supprime des caractères de l'entrée standard et écrit les résultats sur la sortie standard.

La syntaxe pour utiliser tr est le suivant :

$ tr options set1 set2

Jetez un oeil aux exemples ci-dessous, dans la première commande, set1( [:upper:] ) représente la casse des caractères saisis (tous en majuscules).

Alors set2([:lower:]) représente le cas dans lequel les caractères résultants seront. C'est la même chose dans le deuxième exemple et la séquence d'échappement \n signifie une sortie d'impression sur une nouvelle ligne :

[email protected] ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
www.tecmint.com

[email protected] ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM

11. plus de commande

plus La commande est un filtre de lecture de fichiers utile créé essentiellement pour la visualisation des certificats. Il affiche le contenu du fichier dans un format de type page, où les utilisateurs peuvent appuyer sur [Entrée] pour afficher plus d'informations.

Vous pouvez l'utiliser pour afficher des fichiers volumineux comme ceci :

[email protected] ~ $ dmesg | more
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
--More--

12. moins de commande

moins est le contraire de plus commande ci-dessus mais elle offre des fonctionnalités supplémentaires et c'est un peu plus rapide avec des fichiers volumineux.

Utilisez-le de la même manière que more :

[email protected] ~ $ dmesg | less
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
:

Découvrez pourquoi la commande "moins" est plus rapide que la commande "plus" pour une navigation efficace dans les fichiers sous Linux.

C'est tout pour le moment, faites-nous part de tous les outils de ligne de commande utiles non mentionnés ici, qui agissent comme des filtres de texte sous Linux via la section des commentaires ci-dessous.


Linux
  1. 8 commandes Linux pour une gestion efficace des processus

  2. 10 commandes Linux pour les diagnostics réseau

  3. 3 commandes Linux incontournables pour la manipulation de texte

  4. 3 commandes Linux utiles pour les administrateurs système

  5. La commande linux cat peut-elle être utilisée pour écrire du texte dans un fichier?

40 commandes git utiles pour les administrateurs et les développeurs Linux

Les 50 commandes Zypper les plus utiles pour les utilisateurs de SUSE Linux

Les 50 commandes IP Linux utiles pour les administrateurs réseau

14 commandes Tar de base sous Linux avec des exemples pour les débutants

4 commandes Stat sous Linux avec exemple pour les utilisateurs débutants

Commandes Linux et Unix Tee pratiques pour l'administrateur Linux