GNU/Linux >> Tutoriels Linux >  >> Linux

Quelles sont les différences entre grep, awk et sed ?

Je veux juste mentionner une chose, il existe de nombreux outils qui peuvent faire du traitement de texte, par exemple trier, couper, diviser, joindre, coller, comm, uniq, colonne, rev, tac, tr, nl, pr, tête, queue... ..

ils sont très pratiques mais vous devez apprendre leurs options, etc.

Une façon paresseuse (pas la meilleure façon) d'apprendre le traitement de texte pourrait être :seulement apprendre grep , sed et awk. avec ces trois outils, vous pouvez résoudre près de 99% des problèmes de traitement de texte et vous n'avez pas besoin de mémoriser les différentes commandes et options ci-dessus. :)

ET, si vous avez appris et utilisé les trois, vous saviez la différence. En fait, la différence ici signifie quel outil est bon pour résoudre quel type de problème.

une manière plus paresseuse pourrait être d'apprendre un langage de script (python, perl ou ruby) et d'effectuer tous les traitements de texte avec.


Définition courte :

grep :rechercher des termes spécifiques dans un fichier

#usage
$ grep This file.txt
Every line containing "This"
Every line containing "This"
Every line containing "This"
Every line containing "This"

$ cat file.txt
Every line containing "This"
Every line containing "This"
Every line containing "That"
Every line containing "This"
Every line containing "This"

Maintenant awk et sed sont complètement différents de grep .awk et sed sont des processeurs de texte. Non seulement ils ont la capacité de trouver ce que vous recherchez dans le texte, mais ils ont également la possibilité de supprimer, d'ajouter et de modifier le texte (et bien plus encore).

awk est principalement utilisé pour l'extraction de données et la création de rapports. sed est un éditeur de flux
Chacun d'eux a ses propres fonctionnalités et spécialités.

Exemple
Séd

$ sed -i 's/cat/dog/' file.txt
# this will replace any occurrence of the characters 'cat' by 'dog'

Awk

$ awk '{print $2}' file.txt
# this will print the second column of file.txt

awk de base usage:
Calculer somme/moyenne/max/min/etc. tout ce dont vous pourriez avoir besoin.

$ cat file.txt
A 10
B 20
C 60
$ awk 'BEGIN {sum=0; count=0; OFS="\t"} {sum+=$2; count++} END {print "Average:", sum/count}' file.txt
Average:    30

Je vous recommande de lire ce livre :Sed &Awk :2nd Ed.

Cela vous aidera à devenir un utilisateur compétent de sed/awk sur n'importe quel environnement de type Unix.


Grep est utile si vous souhaitez rechercher rapidement des lignes qui correspondent dans un fichier. Il peut également renvoyer d'autres informations simples telles que les numéros de ligne correspondants, le nombre de correspondances et les listes de noms de fichiers.

Awk est un langage de programmation complet construit autour de la lecture de fichiers de style CSV, du traitement des enregistrements et éventuellement de l'impression d'un ensemble de données de résultat. Il peut faire beaucoup de choses mais ce n'est pas l'outil le plus facile à utiliser pour des tâches simples.

Sed est utile lorsque vous souhaitez apporter des modifications à un fichier en fonction d'expressions régulières. Il vous permet de faire correspondre facilement des parties de lignes, d'apporter des modifications et d'imprimer les résultats. C'est moins expressif que awk mais cela le rend un peu plus facile à utiliser pour des tâches simples. Il a beaucoup plus d'opérateurs compliqués que vous pouvez utiliser (je pense que c'est même en train de devenir complet), mais en général, vous n'utiliserez pas ces fonctionnalités.


Linux
  1. Quelles Sont Les Différences Fondamentales Entre Les Shells Mainstream *nix ??

  2. Quelles sont les utilisations légitimes de la commande "touch" ?

  3. Routeur pfSense vs Netgear :quelles sont les principales différences ?

  4. Fedora vs Ubuntu :quelles sont les principales différences ?

  5. Quelles sont les différences entre lsof et netstat sous Linux ?

Cassandra vs MongoDB - Quelles sont les différences ?

Terraform vs Kubernetes :quelles sont les différences

Docker ADD vs COPY :quelles sont les différences ?

IMAP vs POP3 vs SMTP :quelles sont les différences ?

Comment supprimer des lignes vides dans des fichiers à l'aide de Grep, Sed et Awk

useradd vs adduser :quelles sont les différences ?