首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >grep、awk和sed之间有什么区别?

grep、awk和sed之间有什么区别?
EN

Stack Overflow用户
提问于 2011-10-11 22:26:58
回答 3查看 143.8K关注 0票数 145

可能重复:

What are the differences between Perl, Python, AWK and sed?

What is the difference between sed and awk?

也许不是一个非常具体的问题,但我对grepawksed在Unix/Linux系统管理和文本处理方面的作用的差异感到困惑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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"

现在,awksedgrep完全不同。awksed是文本处理器。它们不仅能够在文本中找到您正在寻找的内容,而且还能够删除、添加和修改文本(以及更多)。

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熟练用户。

票数 202
EN

Stack Overflow用户

发布于 2011-10-11 22:31:57

如果您希望快速搜索文件中匹配的行,则Grep非常有用。它还可以返回一些其他简单的信息,如匹配行号、匹配计数和文件名列表。

Awk是一种完整的编程语言,它围绕读取CSV样式的文件、处理记录以及可选地打印出结果数据集而构建。它可以做很多事情,但对于简单的任务来说,它不是最容易使用的工具。

当您想要基于正则表达式对文件进行更改时,Sed非常有用。它允许您轻松地匹配行的一部分,进行修改,并打印结果。它没有awk那么有表现力,但这让它更容易用于简单的任务。它有许多更复杂的运算符,你可以使用(我认为它甚至是图灵完成),但通常你不会使用这些功能。

票数 60
EN

Stack Overflow用户

发布于 2011-10-12 03:51:33

我只想提一件事,有很多工具可以做文本处理,例如排序、剪切、拆分、连接、粘贴、通信、uniq、列、rev、tac、tr、nl、pr、head、tail……

它们非常方便,但你必须了解它们的选项等。

学习文本处理的一种懒惰方法(不是最好的方法)可能是:只学习grep、sed和awk。有了这三个工具,你可以解决几乎99%的文本处理问题,而不需要记住上面不同的cmds和选项。:)

如果你已经学习并使用了这三个工具,你就会知道其中的区别。实际上,这里的区别意味着哪种工具更擅长解决哪种问题。

一种更懒惰的方式可能是学习一种脚本语言(python、perl或ruby),并使用它进行所有的文本处理。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7727640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档