Awk, sed与Grep俗称Linux下三剑客。Sed是一种非交互式且面向字符流的编辑器(a non-interactive stream editor), awk是一门模式匹配的编程语言,它主要用于匹配文本并处理,同时它也有一些编程语言才有的语法,如函数,分支循环语句,变量等。
awk使用
awk语法:
1 | awk [-F ERE] [-v assignment] ... program [argument ...] |
program一般由多个pattern和action组成,当读入的记录匹配pattern时,才会执行相应的action。awk的输入被解析成多条record,默认情况下,记录分隔符是\n, 可以通过内置变量RS更改。因此可以认为一行是一条记录。每个记录被分割成多个Field,默认情况下字段的分隔符是空白符,例如空格,制表符等等,可以通过-F ERE选项改变或者通过内置变量FS更改。在awk中可以通过$1,$2…来访问对应位置的字段,同时$0存放着整个记录。
标准awk命令参数有三个:
- -F ERE : 定义字段分隔符,该选项的值可以是扩展的正则表达式(ERE)
- -f progfile : 指定awk脚本,可以同时指定多个脚本,他们会按照在命令行出现的顺序连接在一起。
- -v assignment : 定义awk变量,name = value, 赋值发生在awk处理文本之前。
sed使用
sed语法:
1 | sed [option] commands [file-to-edit] |
sed执行流程:

grep使用
grep是一种强大的文本搜索工具,它使用正则表达式搜索文本,并把匹配的行打印出来。
语法:1
grep [options] pattern [files]
例子:
1 | echo "this is a word\nnext line" | grep word --color=auto |
find使用
find是一个非常有效的工具,它可以遍历当前目录甚至整个文件系统来查找某些文件或者目录。
语法:
1 | find pathname -options [-print -exec -ok] |
examples
1 |
|