我已经有一段时间使用Linux了,并且对大多数常见的命令行实用程序都有相当不错的了解。然而,那些上来,再次相对于编程是grep
,awk
和sed
。
关于我使用grep的唯一一件事就是将内容传送到其中以在日志文件中查找文件,ps
etc 的输出。我没有使用过awk
或根本没有使用sed
过。这些实用程序有什么好的教程吗?
grep
,sed
并且awk
可以(几乎以相同的方式)完成很多工作。
man
90%脚注的页面相反。
我已经有一段时间使用Linux了,并且对大多数常见的命令行实用程序都有相当不错的了解。然而,那些上来,再次相对于编程是grep
,awk
和sed
。
关于我使用grep的唯一一件事就是将内容传送到其中以在日志文件中查找文件,ps
etc 的输出。我没有使用过awk
或根本没有使用sed
过。这些实用程序有什么好的教程吗?
grep
,sed
并且awk
可以(几乎以相同的方式)完成很多工作。
man
90%脚注的页面相反。
Answers:
O'Reilly的sed和awk书非常适合er sed和awk。
我写了一本书sed
- 权威指南sed的 -即包括教程。它完全覆盖sed
,以及像相关的命令grep
,tr
,head
和tail
。还完全涵盖了正则表达式,比我在其他地方看到的要好得多。
我同意其他人的观点,即扎实理解正则表达式非常重要。我也同意,sed
最好将其用于更简单的任务,更复杂的脚本会很快变得晦涩难懂。
我不同意那awk
是过时的,恰恰相反。就像许多unix事物(例如vi
)一样,有一个学习曲线,但这是值得的。
我不同意使用awk
代替的建议grep
。根据我的经验,这没有任何意义。grep
非常简单
grep
件事-如果可以的话,不要把拖拉机拖到高速公路上。这也是一本非常不错的书-谢谢。
O'Rielly出版的《正则表达式食谱》足以使您以使用它们的任何语言到达任何地方。
该书的作者是Kernigan和Pike,标题类似于“ Unix编程环境”。
我实际上从那本书中学到的书叫做“ Berkely Unix入门”。
如果要从这3个(grep,sed和awk)中学习一个,就可以学习awk / gawk。。awk可以执行grep和sed的功能,即使用正则表达式来搜索/替换文本,以及更多功能,因为它也是一种编程语言。如果您了解gawk / awk的内在知识,则无需使用grep / sed / wc / cut等。只需使用一种工具即可。
g++ -x c++ - -o /tmp/prog && /tmp/prog
并键入命令即可。一种统治所有人的工具!:-)
在我看来,awk或多或少已经过时了(不过,其他人会强烈反对这种观点),如今我认识的大多数人都使用诸如perl或今天的python之类的脚本语言来进行高级文本操作。sed非常适合执行简单的文本操作,我一直都在使用它。我主要是通过查看sed单行代码(例如http://sed.sourceforge.net/sed1line.txt)来学习它的。关于grep:好吧,您基本上希望对正则表达式有一个扎实的了解(sed也需要)。我在这里只是使用了texinfo手册。
awk '{print $3}'
。
dpkg -l
输出)上,awk不能胜过awk 。我不会做任何复杂的事情,但是如果没有awk,我会简而言之。对于更通用的编程语言,我不能说相同的话,尽管我喜欢其中的一些。