Existe-t-il un tutoriel de base pour grep, awk et sed? [fermé]


95

Je suis un utilisateur de Linux depuis un certain temps et je comprends assez bien la plupart des utilitaires de ligne de commande courants. Cependant, ceux qui se présentent et de nouveau par rapport à la programmation sont grep, awket sed.

La seule chose pour laquelle j'ai utilisé grep, c’est d’y ajouter des trucs pour trouver les fichiers dans les fichiers journaux, la sortie de psetc. que je n’ai pas utilisés awkou pas seddu tout. Existe-t-il de bons tutoriels pour ces utilitaires?



J'ai toujours différé l'apprentissage des expressions rationnelles parce que je me dis que je l'apprendrai un jour en lisant les documents originaux de Kleene sur la logique qui ont inventé le concept avant qu'il ne soit largement utilisé dans les ordinateurs.
ixtmixilix

Je suis d'accord avec gvkv: si vous avez besoin d'apprendre cela, vous pourriez aussi bien apprendre Perl, il fait quoi grep, sedet awkfait (et presque de la même manière) et bien plus encore.
reinierpost

J'aime toujours thegeekstuff.com. Ils vont directement aux exemples, contrairement à la manpage habituelle qui donne 90% de notes de bas de page.
isomorphismes

Réponses:



19

Le livre O'Reilly sed and awk est idéal pour les applications les plus en demande.


11

J'ai écrit un livre sur sed- Definitive Guide to sed - qui comprend un tutoriel. Elle couvre entièrement sed, ainsi que les commandes connexes comme grep, tr, headet tail. Couvre également pleinement les expressions régulières bien mieux que ce que j’ai vu ailleurs.

Je conviens avec d’autres que la compréhension des expressions régulières est très importante. Je conviens également qu'il sedvaut mieux utiliser des tâches plus simples, car des scripts plus complexes deviennent rapidement obscurs.

Je ne suis pas d'accord sur le fait que ce awksoit obsolète, au contraire. C'est comme beaucoup de choses Unix (par exemple vi), il y a une courbe d'apprentissage, mais ça en vaut la peine.

Je ne suis pas d'accord avec la suggestion d'utiliser awkà la place de grep. Cela n'a pas de sens dans mon expérience. grepest si simple et génial.


Je seconde la grepchose - vous ne prenez pas le tracteur sur l'autoroute si vous pouvez l'aider. Et c'est un très bon livre aussi - merci.
mikeserv

3

Le livre de recettes des expressions régulières publié par O'Rielly serait suffisant pour vous emmener n'importe où dans la langue qui les utilise.


3

Les auteurs du livre sont Kernigan et Pike, le titre est quelque chose comme "L'environnement de programmation Unix".

Le livre que j'ai appris s'appelle "Une introduction à Berkely Unix".


2

Si vous voulez en apprendre un sur ces 3 (grep, sed et awk), vous pouvez simplement apprendre awk / gawk. . awk peut exécuter les fonctions de grep et de sed, c'est-à-dire utiliser regex pour rechercher / remplacer du texte, et bien plus encore, car il s'agit également d'un langage de programmation. Si vous apprenez les secrets de gawk / awk, vous n'aurez pas besoin d'utiliser grep / sed / wc / cut, etc. Un seul outil suffit.


oh, au fait, nous n'avons même pas besoin de awk, vous pouvez simplement utiliser g++ -x c++ - -o /tmp/prog && /tmp/proget taper vos commandes. Un outil pour les gouverner tous! :-)
Lie Ryan le

1
qui a besoin d'un compilateur quand vous pouvez simplement écrire le binaire directement dans un fichier? chat va faire, ou ed si vous vous sentez paresseux.
cas le

1

À mon avis, awk est plus ou moins obsolète (cependant, d’autres argumenteront fortement cette opinion), la plupart des gens que je connais aujourd’hui utilisent à la place un langage de script tel que perl ou aujourd’hui souvent python pour la manipulation de texte avancée. sed est idéal pour les tâches de manipulation de texte simples, je l’utilise tout le temps. Je l’ai surtout appris en regardant des one-liners sed comme ceux de http://sed.sourceforge.net/sed1line.txt . En ce qui concerne grep: Eh bien, vous souhaitez acquérir une solide compréhension des expressions régulières (également nécessaires pour sed). Je viens ici d'utiliser les manuels texinfo.


10
awk est toujours très utile pour manipuler des données provenant d'autres commandes. Pour une utilisation simple en ligne de commande, je ne le considérerais pas pour l'instant obsolète.
MaQleod

En outre, il devrait être disponible sur de nombreux systèmes en raison de POSIX.
echox

1
La plupart des 'AWK avancés' sont probablement mieux exécutés avec Perl, Python ou autre chose, mais les choses simples sont agréables à faire simplement avec awk.
user455

1
Awk est toujours utile de savoir pour comprendre les différentes réponses que vous pourriez trouver en ligne lorsque vous essayez de résoudre un problème. Vous trouverez souvent des exemples en ligne qui utilisent des déclarations awk telles que awk '{print $3}'.
Steven D

1
Au travail et à la maison, j'utilise awk plus souvent que sed. Rien ne peut battre awk à des données tabulaires fixes, comme la dpkg -lsortie. Je ne ferais rien de compliqué à distance là-dedans, mais je serais un outil court sans me faire mal. Je ne peux pas en dire autant pour les langages de programmation plus généraux, même si certains me plaisent.
JM Becker
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.