我已经有一段时间成为Linux用户了,并且对大多数常见的命令行实用程序都有相当不错的了解。但是,与编程有关的又是grepawksed

关于我使用grep唯一的事情是将内容输送到其中以在日志文件中查找文件,ps的输出等。我根本没有使用过awksed。这些实用程序有什么好的教程吗?

评论

完全正确! :)

我一直推迟学习正则表达式,因为我告诉自己,有一天我会通过阅读Kleene关于逻辑的原始论文来学习它,然后发明了该概念,然后广泛用于计算机。

我同意gvkv:如果您需要学习这些知识,那么不妨学习一下Perl,它可以完成grep,sed和awk的工作(并且以几乎相同的方式),并且还有很多其他功能。

我一直喜欢thegeekstuff.com。他们直接切入了示例,而通常的手册页感觉就像是90%的脚注。

#1 楼

通常,grep用于搜索操作,sed用于搜索和替换操作,而awk特别适合于表格数据,并且学习曲线比某些替代方法低。这些工具之间也有重叠的功能,请参见:何时使用grep,less,awk,sed
grep

文档:man grepinfo grep,GNU grep在线手册

grep和egrep的介绍
grep教程

ripgrep-替代实现,默认情况下是递归的,尊重.gitignore,Rust / PCRE2 regex,SIMD等
关于GNU的电子书grep和ripgrep


文档:man sedinfo sed,GNU sed在线手册

由示例第1部分,第2部分,第3部分教程

sed教程
关于GNU sed单线的电子书
awk



文档:man awkinfo awkinfo gawk,GNU awk在线手册

AWK:教程和简介

示例第1部分,第2部分,第3部分的Awk


AWK入门(alt链接)
关于GNU awk单线的电子书

进一步阅读

RegularExpressions.info
>

#2 楼

O'Reilly的sed和awk书非常适合er sed和awk。

#3 楼

我写了关于sed(sed的权威指南)的书,其中包括一个教程。它全面介绍了sed以及相关命令,例如greptrheadtail。还完全涵盖了正则表达式,比我在其他地方见过的要好得多。

我同意其他人的观点,充分理解正则表达式非常重要。我也同意sed最适合用于更简单的任务,更复杂的脚本会很快变得晦涩难懂。

我不同意awk已过时,相反。就像许多unix事物(例如vi)一样,有一个学习曲线,但值得。

我不同意使用awk代替grep的建议。根据我的经验,这没有任何意义。 grep非常好简单。

评论


我是grep的第二件事-如果可以帮助您,不要将拖拉机拖到高速公路上。而且它也是一本不错的书-谢谢。

–mikeserv
2014年8月23日在4:44



#4 楼

由O'Rielly出版的《正则表达式食谱》足以使您以使用它们的任何语言进入任何地方。

#5 楼

该书的作者是Kernigan和Pike,书名类似于“ Unix编程环境”。

我实际上从中学到的书叫做“ Berkely Unix简介”。

#6 楼

如果要从这3个(grep,sed和awk)中学习一个,就可以学习awk / gawk。awk可以执行grep和sed的功能,即使用regex搜索/替换文本,以及更多其他功能,因为它也可以一种编程语言。如果您了解gawk / awk的内在知识,则无需使用grep / sed / wc / cut等。只需一个工具即可。

评论


哦,顺便说一句,我们甚至不需要awk,您只需使用g ++ -x c ++--o / tmp / prog && / tmp / prog并键入您的命令即可。一种统治所有人的工具! :-)

– Lie Ryan
2010-09-28 9:10



当您只需将二进制文件直接写入文件时,谁需要编译器?如果您感到懒惰,cat会做,或ed。

–cas
2011-09-29 4:54

#7 楼

在我看来,awk或多或少已经过时了(但是,其他人会强烈反对这种观点),如今我认识的大多数人都改为使用某些脚本语言(如perl或今天的python)来进行高级文本操作。 sed非常适合执行简单的文本操作任务,我一直都在使用它。我主要是通过查看sed单行代码(例如http://sed.sourceforge.net/sed1line.txt)来学习它的。关于grep:好吧,您基本上希望对正则表达式有扎实的了解(sed也需要)。我在这里只是使用了texinfo手册。

评论


对于处理从其他命令管道传输的数据,awk仍然非常有用。对于简单的命令行用法,我不会认为它已经过时了。

– MaQleod
2010-09-25 21:57

而且由于POSIX,它应该在许多系统上都可用。

– echox
2010-09-27 13:04

大多数“高级AWK”可能最好用perl或python或其他任何东西来完成,但是简单的东西仅用awk就能很好地完成。

–user455
2010-09-28 14:12

在尝试解决问题时,Awk仍然有助于了解您可能在网上找到的各种答案。您经常会在线上看到一些使用awk语句的示例,例如awk'{print $ 3}'。

–史蒂文·D
2010-09-28 15:30

在工作中以及在家里,我经常使用awk,然后使用sed。在固定的表格数据(如dpkg -l输出)上,awk不能胜过awk。我不会做任何复杂的事情,但是如果没有awk,我会简而言之。对于更通用的编程语言,我不能说相同的话,尽管我喜欢其中的一些。

– J. M. Becker
2011年12月31日4:22