一、grep
1. 基础知识
- 作用:用于文本搜索,文本过滤器
- grep格式:grep 匹配条件 处理文件
- 扩展:grep -E=egrep
2. 常用参数
参数 | 含义 |
---|---|
grep root passwd | 过滤root关键字 |
grep ^root passwd | 以root开头 |
grep root$ passwd | 以root结尾 |
grep -i root passwd | 忽略大小写 |
grep -E “<root” passwd | root字符之前不能有字符 |
grep -E “root>” passwd | root字符之后不能有字符 |
grep -数学 | 显示过滤行以及上面几行和下面几行 |
grep -n | 显示匹配的行所在行号 |
grep -A | 显示过滤行以及下面几行 |
grep -B | 显示过滤行以及上面几行 |
grep -v | 反向过滤 |
3. grep字符数量匹配规则
符号 | 含义 |
---|---|
^jia | 以jia开头 |
jia$ | 以jia结尾 |
w…d | w开头d结尾中间4个任意字符 |
…s | s结尾前面5个任意字符 |
-E * | 字符出现0到任意次 |
-E ? | 0到1次 |
-E + | 1到任意次 |
-E {n} | n次 |
-E {m,n} | m到n次 |
-E {,n} | 0到n次 |
-E {m,} | 最少m次 |
-E (jia){2} | jia字符串出现2次 |
二、sed
1. 命令格式
sed 参数 命令 处理对象;sed 参数 处理对象 -f 处理规则文件
2. 对字符的处理
显示:p;删除:d;添加:a;替换:c;写入:w;插入:i;整合:r
显示:p
字符 | 含义 |
---|---|
sed -n 5p jia | 显示第五行 |
sed -n 3,5p jia | 显示3到5行 |
sed -ne “3p;5p” jia | 显示3和5行 |
sed -ne 1,5p jia | 显示1-5行 |
sed -ne ‘8,$p’ jia | 显示8到最后一行 |
sed -n ‘/^#/p’ /etc/fstab | 显示/etc/fstab文件中以#开头的行 |
删除:d
字符 | 含义 |
---|---|
sed 5d jia | 删除第五行 |
sed ‘/^#/d’ fstab | 把#开头的行删除 |
sed ‘/UUID/!d’ fstab | 除了UUID以外的行都删除 |
sed -e ‘5,$d’ jia | 删除5到最后一行 |
添加:a
字符 | 含义 |
---|---|
sed -e ‘$a hello world’ fstab | 文件最后一行添加hello world |
sed -e ‘$a hello\nworld’ fstab | 换行添加hello world |
sed -e ‘/^#/a hello world’ fstab | 在文件中以#开头的每一行下添加hello world |
替换:c
字符 | 含义 |
---|---|
sed -e ‘/^#/chello world’ fstab | 替换以#开头的行为指定内容hello world |
sed -e ‘5chello world’ jia | 替换指定行第五行为hello world |
把符合的行写在指定文件中:w
sed -e ‘/^UUID/w jiafile’ fstab:把fstab中UUID开头的行写入到jiafile中
插入:i
sed ‘5ihello world’ jia:在文件第五行上面插入指定内容hello world
整合文件:r
sed ‘5r haha’ jia:将haha文件的内容整合到jia文件第五行的下面
3. 字符替换
格式 | 含义 |
---|---|
sed ‘s/: /###/g’ file | 把文件全文中的:替换成### |
sed ‘s/: /###/’ file | 只替换第一列中的:为### |
sed ‘1,5s/: /###/g’ file | 替换第一行到第五行的:为### |
sed ‘1s/: /###/g’ file | 只替换第一行的:为### |
sed ‘1s/: /###/g;5s/: /###/g’ file | 替换第一行和第五行的:为### |
sed ‘/lp/,/shutdown/s/: /###/g’ file | 替换字符lp到shutdown之间的行中的:为### |
sed ‘s/\//####/g’ file | 替换全文中的/为####,注意需要使用“\”进行转译 |
sed ‘s@/@####@g’ file | @也是分隔符,可用于替换 |
sed ‘s@/@####@g’ -i file | 把sed处理的内容保存到file文件中 |
三、awk
1. 基础知识
- 含义:AWK 是一种用于处理文本的编程语言工具。
- AWK大致操作流程是扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
- 处理模板:awk -F 分隔符 ‘BEGIB{}{}END{}’ FILENAME
默认以空格做为分隔符,不用加参数-F - 命令格式:awk ‘条件{动作}’。{}以外为条件
2. 常用信息
字符 | 含义 |
---|---|
NR | 行数 |
NF | 列数 |
FILENAME | 文件名称本身 |
jia | jia变量值 |
“jia” | jia字符串 |
$n | 第n列(n等于1到任意数),例如$1表示第一列 |
$0 | 所有的列 |
3. 运算规则
对于执行两种条件时,可以存在多种关系:
/bash$/ | 一个条件,表示以bash结尾 |
---|---|
/条件1|条件2/ | 一个条件包含两个元素,两元素是或者关系 |
/条件1/||/条件2/ | 条件1或者条件2 |
/条件1/&&/条件2/ | 条件1并且条件2 |