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

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

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

简短定义:

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是文本处理器。他们不仅能够找到你在文本中寻找的内容,还能够删除、添加和修改文本(以及更多内容)。< br >

awk主要用于数据提取和报告,sed是一个流编辑器
它们每一个都有自己的功能和特点。

例子
教育统筹局局长

$ sed -i 's/cat/dog/' file.txt
# this will replace any occurrence of the characters 'cat' by 'dog'


$ awk '{print $2}' file.txt
# this will print the second column of file.txt

基本 awk用法:
计算总和/平均/最大/分钟/等你可能需要什么。 < br >

$ 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: 第二版。

它将帮助您成为任何类 Unix 环境中的熟练 sed/awk 用户。

我只想提一件事,有很多工具可以做文本处理,例如。 排序,剪切,分割,联接,粘贴,comm,uniq,column,rev,tac,tr,nl,pr,head,tail... ..。

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

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

而且,如果你已经学会并使用了这三种方法,你就会知道其中的区别。实际上,这里的差异意味着哪种工具擅长解决什么样的问题。

更懒惰的方法可能是学习一种脚本语言(python、 perl 或 Ruby) ,并用它来处理每一个文本。