1)作用:grep命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件。
2)命令格式:grep [选项] 要匹配的字符串 文件名
3)常见选项:
-b | 将二进制文件作为文本来进行匹配 |
-c | 统计以模式匹配的数目 |
-i | 忽略大小写 |
-n | 显示匹配文本所在行的行号 |
-v | 反选,输出不匹配行的内容 |
-r | 递归匹配查找 |
-A n | 除了列出匹配行之外,还列出后面的 n 行 |
-B n | 除了列出匹配行之外,还列出前面的 n 行 |
--color=auto | 将输出中的匹配项设置为自动颜色显示 |
4)实例:
grep 支持三种正则表达式引擎,分别用三个参数指定:
-G | POSIX 基本正则表达式,BRE |
-E | POSIX 扩展正则表达式,ERE |
-P | Perl 正则表达式,PCRE |
grep 默认使用基本正则表达式,或者在使用的时候加上 -G 参数
① 位置
例:
查找 /etc/group 文件中以 "root" 为开头的行
② 数量
例:
匹配以 'z' 开头以 'o' 结尾的所有字符串
匹配以 'z' 开头以 'o' 结尾,中间包含一个任意字符的字符串
匹配以'z'开头,以任意多个'o'结尾的字符串
注:\n 是换行符
③ 选择
特殊符号及说明
[:alnum:] |
代表英文大小写字母及数字,即:0-9, A-Z, a-z |
[:alpha:] | 代表英文大小写字母,即:A-Z, a-z |
[:digit:] | 代表数字,即:0-9 |
[:lower:] | 代表小写字母,即:a-z |
[:upper:] | 代表大写字母,即:A-Z |
[:punct:] | 代表标点符号,即:" ' ? ! ; : # $ 等 |
[:cntrl:] | 代表键盘上面的控制按键,包括:CR, LF, Tab, Del 等 |
[:print:] | 代表任何可以被列印出来的字符 |
[:blank:] | 代表空白键与 [Tab] 按键 |
[:graph:] | 除了空白字节(空白键与 [Tab] 键)外的其他所有按键 |
[:space:] | 代表任何会产生空白的字符,包括:空白键, [Tab], CR 等 |
[:xdigit:] | 代表 16 进位的数字类型,包括: 0-9, A-F, a-f 的数字与字节 |
例:
匹配所有的小写字母
匹配所有的数字
匹配所有的数字
匹配所有的小写字母
匹配所有的大写字母
匹配所有的字母和数字
匹配所有的字母
通过 grep 使用扩展正则表达式需要加上 -E 参数,或使用 egrep
① 数量
例:
只匹配 "zo"
匹配以 "zo" 开头的所有单词
② 选择
例:
匹配 "www.baidu.com" 和 "www.google.com"
匹配不包含 "baidu" 的内容
注:. 符号有特殊含义,所以需要转义
sed 工具是用于过滤和转换文本的流编辑器,与 vim、emacs、geditdeng等编辑器不同的是,sed 是一个非交互式的编辑器。
本文仅介绍 sed 的基本操作,更多内容参考以下链接:sed 简明教程、sed 单行脚本快速参考、sed完全手册
1.sed 命令基本格式:sed [选项] [执行命令] [输入文件]
2.常用参数:
-n | 安静模式,只打印受影响的行,默认打印输入数据的全部内容 |
-e | 用于脚本添加多个执行命令一次执行,在命令行中执行多个命令不需要加 |
-f filename | 指定执行 filename 文件中的命令 |
-r | 使用扩展正则表达式,默认为标准正则表达式 |
-i | 将直接修改输入文件内容,而不是打印到标准输出设备 |
3.执行命令格式:
1)[n1][,n2] command [作用范围]
2)[n1][~step] command [作用范围]
n1、n2 表示输入内容的行号,它们之间为 ,逗号表示从 n1 到 n2 行,~波浪号表示从 n1 开始以 step 为步进的所有行,command 为执行动作。
4.常见执行命令
s | 行内替换 |
c | 整行替换 |
a |
插入到指定行的后面 |
i | 插入到指定行的前面 |
p | 打印指定行,通常与 -n 参数配合使用 |
d | 删除指定行 |
5.实例
1)找一个操作用的文件
2)打印 2-5 行
3)打印奇数行
4)将输入文本中 "root" 全局替换为 "test",并只打印替换的那一行
5)行间替换
找出 root 的那一行并计算行号
将 root 替换为 www.root.com
1.概述
AWK 是一种优良的文本处理工具,是 Linux 中现有的功能最强大的数据处理引擎之一,其使用的 AWK 程序设计语言,又叫样式扫描和处理语言。它允许创建简短的程序,通过程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表等等。简单地说,AWK 是一种用于处理文本的编程语言工具。
awk 所有的操作都是基于 pattern(模式)—action(动作) 对 来完成的,其形式为:pattern {action}
如同很多编程语言一样,它将所有的动作操作用一对 {} 花括号包围起来,其中 pattern 通常是表示用于匹配输入的文本的“关系式”或“正则表达式”,action 则是表示匹配后将执行的动作。
在一个完整 awk 操作中,模式与动作可以只有其中一个。如果没有 pattern,则默认匹配输入的全部文本;如果没有 action,则默认为打印匹配内容到屏幕。
awk 处理文本的方式,是将文本分割成一些“字段”,然后再对这些字段进行处理,默认情况下,awk 以空格作为一个字段的分割符,也可以任意指定分隔符。
本文仅介绍 awk 的基本操作,更多内容参考以下链接:awk 程序设计语言、awk 简明教程、awk 用户指南
2.awk 命令基本格式:awk [-F fs] [-v var=value] [-f prog-file | 'program text'] [file...]
-F 参数用于预先指定字段分隔符,-v 参数用于预先为 awk 程序指定变量,-f 参数用于指定 awk 命令要执行的程序文件,或者在不加 -f 参数的情况下直接将程序语句放在这里,最后为 awk 需要处理的文本输入,且可以同时输入多个文本文件。
3.awk 常用内置变量
FILENAME |
当前输入文件名,若有多个文件,则只表示第一个。如果输入是来自标准输入,则为空字符串 |
$0 | 当前记录的内容 |
$N | N表示字段号,最大值为NF变量的值 |
FS | 字段分隔符,由正则表达式表示,默认为" "空格 |
RS | 输入记录分隔符,默认为"\n",即一行为一个记录 |
NF | 当前记录字段数 |
NR | 已经读入的记录数 |
FNR | 当前输入文件的记录数 |
OFS | 输出字段分隔符,默认为" "空格 |
ORS | 输出记录分隔符,默认为"\n" |
4.实例
存在一文档
1)使用 awk 将内容打印到终端
2)将 test 的第一行的每个字段单独显示为一行
注:在学习和使用 awk 的时候,应尽可能将其作为一门程序语言来理解,这样将会使你学习更容易,所以初学阶段在练习 awk 时应该尽量按照分多行按照一般程序语言的换行和缩进来输入,而不是全部写到一行。