简短定义:
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
用法:
计算总和/平均值/最大值/最小值/等。您可能需要什么。
$ 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 用户。
如果您想快速搜索文件中匹配的行,Grep 很有用。它还可以返回一些其他简单信息,例如匹配行号、匹配计数和文件名列表。
awk 是一种完整的编程语言,它围绕读取 CSV 样式的文件、处理记录以及可选地打印出结果数据集而构建。它可以做很多事情,但它不是用于简单任务的最简单工具。
当您想根据正则表达式更改文件时,Sed 很有用。它允许您轻松匹配部分线条、进行修改和打印结果。它不如 awk 富有表现力,但这使它更容易用于简单的任务。它有许多您可以使用的更复杂的运算符(我认为它甚至是图灵完备的),但通常您不会使用这些功能。
我只想提一件事,有很多工具可以做文本处理,例如sort、cut、split、join、paste、comm、uniq、column、rev、tac、tr、nl、pr、head、tail... ..
它们非常方便,但您必须了解它们的选择等。
学习文本处理的一种懒惰方式(不是最好的方式)可能是:只学习 grep 、 sed 和 awk。使用这三个工具,您可以解决几乎 99% 的文本处理问题,并且无需记住以上不同的 cmd 和选项。 :)
而且,如果您已经学习并使用了这三种方法,您就会知道其中的区别。实际上,这里的区别意味着哪个工具擅长解决什么样的问题。
一种更懒惰的方法可能是学习一种脚本语言(python、perl 或 ruby)并使用它进行所有文本处理。
不定期副业成功案例分享