可能重复:
What are the differences between Perl, Python, AWK and sed?
What is the difference between sed and awk?
也许不是一个非常具体的问题,但我对grep
、awk
和sed
在Unix/Linux系统管理和文本处理方面的作用的差异感到困惑。
发布于 2011-10-11 22:44:38
简短的定义:
grep
:在文件中搜索特定术语
#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"
现在,awk
和sed
与grep
完全不同。awk
和sed
是文本处理器。它们不仅能够在文本中找到您正在寻找的内容,而且还能够删除、添加和修改文本(以及更多)。
awk
主要用于数据提取和报告。sed
是一个流编辑器
它们中的每一个都有自己的功能和特点。
示例
Sed
$ 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
用法:
计算sum/average/max/min/等任何你可能需要的。
$ 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
我推荐你读这本书:Sed & Awk: 2nd Ed.
它将帮助您成为任何类unix环境中的sed/awk熟练用户。
发布于 2011-10-11 22:31:57
如果您希望快速搜索文件中匹配的行,则Grep非常有用。它还可以返回一些其他简单的信息,如匹配行号、匹配计数和文件名列表。
Awk是一种完整的编程语言,它围绕读取CSV样式的文件、处理记录以及可选地打印出结果数据集而构建。它可以做很多事情,但对于简单的任务来说,它不是最容易使用的工具。
当您想要基于正则表达式对文件进行更改时,Sed非常有用。它允许您轻松地匹配行的一部分,进行修改,并打印结果。它没有awk那么有表现力,但这让它更容易用于简单的任务。它有许多更复杂的运算符,你可以使用(我认为它甚至是图灵完成),但通常你不会使用这些功能。
发布于 2011-10-12 03:51:33
我只想提一件事,有很多工具可以做文本处理,例如排序、剪切、拆分、连接、粘贴、通信、uniq、列、rev、tac、tr、nl、pr、head、tail……
它们非常方便,但你必须了解它们的选项等。
学习文本处理的一种懒惰方法(不是最好的方法)可能是:只学习grep、sed和awk。有了这三个工具,你可以解决几乎99%的文本处理问题,而不需要记住上面不同的cmds和选项。:)
如果你已经学习并使用了这三个工具,你就会知道其中的区别。实际上,这里的区别意味着哪种工具更擅长解决哪种问题。
一种更懒惰的方式可能是学习一种脚本语言(python、perl或ruby),并使用它进行所有的文本处理。
https://stackoverflow.com/questions/7727640
复制相似问题