grep:文本过滤工具
grep 的功能是从文本文件或管道数据流中筛选匹配的行及数据。
语法格式:
grep [OPTIONS] PATTERN [FILE]
1.OPTIONS:参数
2.PATTERN:匹配模式
3.FILE查找的文件
grep 命令常用的参数选项及说明
参数选项 | 说明 |
---|---|
-v | 显示不包含匹配文件的所有行 |
-n | 显示匹配行及行号 |
-i | 不区分大小写 |
-c | 统计匹配行数 |
-E | 使用扩展的egrep命令 |
–color=auto | 为grep过滤的匹配字符串添加颜色 |
-w | 只匹配过滤的单词 |
-o | 只输出匹配的内容 |
grep -Ei 'go|java' test.txt 等同于 egrep -i 'go|java' test.txt
grep 命令其他参数选项使用 man grep 或 grep --help 查看
Sed (Stream Editor):字符流编辑器
sed 是操作、过滤和转换文本内容的强大工具。
语法格式:
sed [选项] [sed内置命令符号] [输入文件]
sed 命令的参数选项及说明
参数选项 | 说明 |
---|---|
-n | 取消默认的 sed 输出,常与 sed 内置命令的 p 连用 |
-i | 直接修改文件内容。如果不使用 -i 选项,则 sed 只是修改内存中的数据,并不会影像磁盘上的文件 |
sed 常用内置命令字符
sed 的内置命令字符 | 说明 |
---|---|
a | 全拼 append ,表示追加文本,在指定行后添加一行或多行文本 |
d | 全拼 delete,表示匹配行的文本 |
i | 全拼 insert,表示插入文本,在指定行前添加一行或多行文本 |
p | 全拼 print,表示打印匹配行的内容,通常 p 会与选项 -n 一起使用 |
s/regexp/replacement/ | 匹配 regexp 部分的内容,用 replacement 替换 regexp 匹配的内容 |
sed 的内置命令字符 a、d、i 直接使用只是修改内存中的数据,如果想直接修改磁盘上的文件数据,配合 -i 参数选项使用。
Awk
Awk 是一个维护和处理文本数据文件的强大语言。在文本数据有一定的格式,即每行数据包含多个以分界符分隔的字段时,显得尤其有用。
Awk 基础语法:
awk -Fs '/pattern/{action}' input-file
或
awk -Fs '{action}' input-file
- -F 为字符分界符。如果不指定,默认会使用空格作为分界符;
- /pattern/ 和 {action} 需要用单引号引起来;
- /pattern/ 是可选的。如果不指定, awk 将处理输入文件中的所有记录。如果指定一
个模式, awk 则只处理匹配指定的模式的记录; - {action} 为 awk 命令,可以是单个命令,也可以多个命令。整个 action(包括里面的
所有命令)都必须放在{ 和 }之间; - input-file 即为要处理的文件
Awk 程序结构(BEGIN,body,END)区域
- BEGIN 区域语法:
BEGIN {awk-commands}
BEGIN 区域的命令只最开始、在 awk 执行 body 区域命令之前执行一次
- body 区域语法:
/pattern/{action}
- END 区域语法:
END{awk-commands}
END 区域在 awk 执行完所有操作后执行,并且只执行一次。
awk 内置变量
- FS - 输出字段分隔符
- OFS - 输出字段分隔符
- RS - 记录分隔符
- ORS - 输出记录分隔符
- NR - 记录序号
awk 用法很多,我这里只是简单介绍一下。关于 sed 与 awk 学习推荐阅读一下 「Sed and Awk 101 Hacks」这本书,写的很好,有相关使用技巧的 Demo。