正则表达式
是一串有规律的字符串
- grep
- grep abc123 filename
`- c : 行数, 可以用来计数, 文本里出现多少次要找的字符串
`- i : 不区分大小写
`- n : 显示行号
`- v: 取反
`- r : 遍历子目录以下的文件, 遍历目录用 -r
`- A : 后面跟数字, 过滤出符合要求的行以及下面的 n 行
`- B: 同上, 过滤出符合要求的行以及上面的 n 行
`- C : 同上, 同时过滤出符合要求的行以及上下各 n 行
元字符
`*` 前一个字符匹配 0 次或 任意 多次 (星 号前一个字符不起作用)
`.` 匹配除了换行符外 点号前面的任意 一个 字符
`+` 表示 1 次到多次,\+ 也要脱义, 否则用 egrep
? ? 号前面的字符匹配 1 或者 0 次,\? 也要脱义, 否则用 egrep
$ 匹配行首, 列如 ^hello 会匹配以 hello 开头的行
| 表示匹配多个字符 root|nologin|aaa
[ ] 匹配中括号指定的任意一个字符, 只匹配一个字符
例如:[0-9] 匹配任意一个数字,[a-z][0-9] 匹配小写字母和一位数字构成的两位字符
[^] 匹配除了中括号的字符以外的任意一个字符
例如:[^0-9] 匹配任意一位非数字字符
[^a-z] 表示任意一位非小写字符
\ 转移符, 用于取消将特殊符号的含义取消
\{n\} 表示其前面的字符恰好出现 n 次
例如:[0-9]\{4\} 匹配 4 位数字
[1][3-8][0-9]\{9\} 匹配手机号码
\{n,\} 表示其前面的字符出现 不小于 n 次
例如:[0-9]\{2,\} 表示两位以及以上的数字
\{n,m\} 表示其前面的字符出现 至少 n 次, 最多出现 m 次
例如:[a-z]\{6,8\} 匹配 6 到 8 位的小写字母
egrep = grep -E 可以免去脱义符
egrep {} = grep \{\} = grep -E {}
sed 文本替换
轻量级流编辑器, 主要用来将数据进行选取, 替换, 删除, 新增
`- r : 支持脱义
`- n : 一般会把所有的数据输出到屏幕上, 如果加入 n 选项, 只会输出已匹配的行, 一般加入 p 选项 print
`- e : 加多命令编辑
`- i : 修改, 修改已读数据文件, 直接更改文件内容, sed -i 1,5d 1.txt
动作, 加在 字符串后面的
`- I : 不区分大小写
`- d : 删除指定行数 sed 1,10d 1.txt 1-10 行 delete
`- a : 追加, 在当前行后添加一行或者多行
`- c : 行替换, 用 c 后面的字符串替换原数据
`- i : 插入, 在当前行前插入一行或者多行 d : 删除, g : 全局
`- p : 打印, 输出指定的行
`- s : 字串替换, 用一个字符串替换另一个字符串
行范围 s / 旧字符串 / 新字符串 / g g : 表示全局, 不加就表示一行
awk
awk 工具 分段匹配
`- F 指定分割符
$1 表示 第一段, $0 表示所有
- awk {print $0} 1.txt
- awk {print $1,$3,$7} 1.txt
默认分隔符为空格, 或者空白字符
`~` 匹配 后面的字符
也支持正则
支持多个表达式一起写
awk -F : /root|user {print $0} 1.txt
数学运算
$3 > 100 大于 100
$3 == 100 等于 100
$3 < 100 小于 100
$3 >= 100 大于等于 100
$3 != 100 不等于
$3 > "5" && $3 < "7" 大于 5 小于 7 && 与,|| 或
{OFS="#"} 内置变量, 指定 print 打印用到的分割符 #
{NR} 行 NR<=10 前 10 行
{NF} 段 NF==6 第 6 段
{BEGIN} {END}
来源: http://www.bubuko.com/infodetail-2506722.html