Linux之三剑客
通配符
- shell的内置功能
1 | * 匹配任何字符串/文本,(0个或多个)包括空字符串 |
1 | ls *.txt ls stu* ls stu*.txt |
正则表达式
- 帮助我们快速过滤
- 通配符:查找文件名
- 正则表达式:在文件中过滤内容
- 以行为单位
^ | 表示以什么开始 |
---|---|
$ | 表示以什么时候结束 ^$ 表示空行 |
. | 表示任意一个字符,不匹配空行(但匹配手动输入的空行)特殊字符 |
* | 表示出现0次或0次以上 |
[ ] | 所见即所得,里面任意一个,默认或者,支持序列如[0-9a-z] |
扩展正则表达式
符号 | 代表意思 |
---|---|
^ | 在[ ^ ] 中是取反 |
+ | 扩展正则 + 前一个出现一次或一次以上 ,[内容]和+ 过滤连续的内容 |
| | 表示或者 |
{} | {n,m} 最少连续出现n次 有限匹配最大数 egrep ‘[0-9]{2,3}’ |
三剑客之grep
- grep [参数] ‘匹配’ 文件
- 以行为单位
- 参数:-r -v -o -i -w -E
1 | 1. 过滤1.txt中以m开头的行 |
三剑客之sed
- 查找字符串、替换内容、删除内容、后向引用
- sed [参数] ‘匹配 动作’ 文件 p:print 打印
- sed ‘找谁 干啥’ 文件
- cat 文件 | sed ‘找谁 干啥’
- 参数:-i 修改源文件 -n 默认取消输出 -a -i -c 增加 d删除
1 | 1. sed 按行查找内容 |
三剑客之awk
取行,取列,数据统计,数值计算,
if 判断 for 循环 while循环 属组
awk中动作都是在{print}中
如果没找到,默认会对所有进行处理
awk ‘模式{动作}’ 文件 //在动作中,输出字符串,必须加 “ “
语法格式:awk [选项] ‘模式{动作}’ 1.txt
选项参数:NR 行号 NF 列号 $0 存储每一行内容 $n 第n行 . 空格
-F :指定:为分隔符 -F “[ ]+” 指定空格为分隔符,默认或者
-F “[: /]+” 指定:/和空格组合为分隔符 需要扩展正则加 -r
1 | 1. awk 取第3行 |
命令 | awk | sed | grep |
---|---|---|---|
行 列 数据统计 循环 判断 数组 | 文本中的内容 | ||
语法格式 | awk [参数]’模式{动作}’ 文件 | sed [参数]’匹配,动作’ 文件 | grep [参数]’匹配’ 文件 |
关键参数 | NR 行号NF列号 $0存储每一行内容 $1 ,空格 | -n -i -a i c | -r -v -o -i -w -E |
增加 | sed ‘/内容/a’ 1.txt | ||
删除 | sed ‘/3/d’ 文件 | ||
模糊过滤 | awk ‘/root/‘ 1.txt | sed -n ‘/root/p’ 1.txt | |
取行 | awk ‘NR==1’ 1.txt | sed -n ‘3p’ 1.txt | |
取列 | awk ‘{print $1}’ 1.txt | ||
默认以空格和tab为分隔符 | |||
-F “[:=]+” | |||
区间 | awk ‘/root/,/hc/‘ 1.txt | sed ‘/root/,/hc/‘ 1.txt | |
sed -n ‘1,3p’ 1.txt | |||
替换 | sed -i ‘s###g’ 1.txt | ||
sed -i ‘1,5s#^###g’ 1.txt | |||
模式加动作 | awk “NR==3” awk’NR==3{print $1}’ awk ‘/root/{print $2,$NF}’ | sed -n {3p} sed ‘3s###g’ | |