¿Hay un tutorial básico para grep, awk y sed? [cerrado]

95

He sido un usuario de Linux por un tiempo, y tengo una comprensión bastante decente de la mayoría de las utilidades de línea de comandos comunes. Sin embargo, los que vienen hacia arriba y de nuevo en relación con la programación son grep, awky sed.

Para lo único que he usado grep es para canalizar cosas en él para encontrar archivos en archivos de registro, la salida de psetc. No he usado awko sednada. ¿Hay buenos tutoriales para estas utilidades?

Macha
fuente
Siempre he pospuesto el aprendizaje de expresiones regulares porque me digo a mí mismo que algún día lo aprenderé leyendo los documentos originales de Kleene sobre lógica que inventaron el concepto antes de que se usara ampliamente en las computadoras.
ixtmixilix
Estoy de acuerdo con gvkv: si necesita aprender estos, también podría aprender Perl, hace qué grep, sedy awkhace (y casi de la misma manera) y mucho más.
reinierpost
Siempre me gusta thegeekstuff.com. Cortan directamente a los ejemplos, a diferencia de la manpágina habitual que se siente como 90% de notas al pie.
isomorfismos

Respuestas:

11

Escribí un libro sobre sed- Guía definitiva para sed - que incluye un tutorial. Se cubre totalmente sed, así como los comandos relacionados, como grep, tr, heady tail. También cubre completamente las expresiones regulares mucho mejor de lo que he visto en otros lugares.

Estoy de acuerdo con otros en que es muy importante comprender bien las expresiones regulares. También estoy de acuerdo en que sedse usa mejor para tareas más simples, los scripts más complejos se vuelven oscuros rápidamente.

No estoy de acuerdo con que awksea ​​obsoleto, todo lo contrario. Es como muchas cosas de Unix (por ejemplo, vi), hay una curva de aprendizaje, pero vale la pena.

No estoy de acuerdo con la sugerencia de usar awken lugar de grep. No tiene sentido en mi experiencia. grepEs genial y simple.

Daniel Goldman
fuente
Lo grepsecundo: no puedes tomar el tractor en la autopista si puedes evitarlo. Y también es un libro bastante bueno, gracias.
mikeserv
3

El Libro de cocina de expresiones regulares publicado por O'Rielly sería suficiente para llevarlo a cualquier parte en cualquier idioma que los use.

ixtmixilix
fuente
3

Los autores del libro son Kernigan y Pike, el título es algo así como "El entorno de programación de Unix".

El libro del que realmente aprendí se llamaba "Una introducción a Berkely Unix".

HandyGandy
fuente
2

Si va a aprender uno de estos 3 (grep, sed y awk), puede aprender awk / gawk. . awk puede hacer las funciones de grep y sed, es decir, usar expresiones regulares para buscar / reemplazar texto, y mucho más porque también es un lenguaje de programación. Si aprende los detalles de gawk / awk, no necesitará usar grep / sed / wc / cut, etc. Solo una herramienta lo hace.

usuario1606
fuente
oh, por cierto, ni siquiera necesitamos awk, solo puedes usar g++ -x c++ - -o /tmp/prog && /tmp/progy escribir tus comandos. ¡Una herramienta para gobernarlos a todos! :-)
Lie Ryan
1
¿Quién necesita un compilador cuando puede escribir el binario directamente en un archivo? gato lo hará, o ed si te sientes flojo.
cas
1

En mi opinión, awk es más o menos obsoleto (sin embargo, otros discutirán enérgicamente esta opinión), la mayoría de las personas que conozco hoy en día usan un lenguaje de script como Perl o Python para la manipulación avanzada de texto. sed es ideal para tareas de manipulación de texto más simples, lo uso todo el tiempo. Lo aprendí principalmente mirando sed one-liners como los de http://sed.sourceforge.net/sed1line.txt . Con respecto a grep: Bueno, básicamente desea obtener una comprensión sólida de las expresiones regulares (también necesarias para sed). Acabo de usar los manuales de texinfo.

fschmitt
fuente
10
awk sigue siendo muy útil para manipular datos canalizados desde otros comandos. Para el uso simple de la línea de comandos, todavía no lo consideraría obsoleto.
MaQleod
También debería estar disponible en muchos sistemas debido a POSIX.
echox
1
La mayoría de los 'AWK avanzados' probablemente se hagan mejor con perl o python o lo que sea, pero las cosas simples son agradables de hacer con solo awk.
user455
1
Awk sigue siendo útil saber para comprender varias respuestas que puede encontrar en línea cuando intente resolver un problema. A menudo encontrará ejemplos en línea que usan declaraciones awk como awk '{print $3}'.
Steven D
1
En el trabajo y en casa, uso awk con más frecuencia que sed. Nada puede vencer a awk en datos tabulares fijos, como la dpkg -lsalida. No haría nada remotamente complicado, pero sería una herramienta corta sin awk. No puedo decir lo mismo para lenguajes de programación más generales, por mucho que me gusten algunos de ellos.
JM Becker