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.