08 Linux三剑客—grep、sed、awk
1.正则表达式:
正则表达式:对文本进行过滤的工具
(1)单个字符匹配:
说明 | 命令 |
---|---|
普通字符匹配(忽略大小写) | i |
单个任意字符匹配 | . |
特殊字符匹配 | \ 元字符转义 |
(2)一组字符匹配:
说明 | 命令 |
---|---|
多个字符中的某一个的匹配 | [] |
利用字符集合区间的匹配 | [0-9a-zA-Z] |
排除字符的匹配 | [^a-z] |
(3)元字符:
说明 | 命令 |
---|---|
空白字符匹配 | \b 、\f 、\t 、\v (win:\n 、\r ) |
特定数字元字符匹配 | \d 、\D |
特定字母元字符匹配 | \w 、\W |
特定空白字符 | \s 、\S |
16或8进制匹配 | \x 、\0 |
(4)POSIX字符类:
方括号表达式 | 说明 |
---|---|
[[ :alnum: ]] |
所有字母和数字,等价于[0-9a-zA-Z] |
[[ :digit: ]] |
所有数字,等价于[0-9] |
[[ :alpha: ]] |
所有字母,等价于[a-zA-Z] |
[[ :upper: ]] |
大写字母,等价于[A-Z] |
[[ :lower: ]] |
小写字母,等价于[a-z] |
[[ :black: ]] |
空白 |
(4)重复匹配:
说明 | 命令 |
---|---|
1个或多个匹配 | + |
0个或多个匹配 | * |
0个或1个匹配 | ? |
重复匹配的次数 | {2,4} |
2.Linux三剑客之sed:
(1)sed基本概念:
sed
是一个非交互式的文本编辑器
sed
从文件或标准输入中每次读取一行数据,并复制到缓冲区里,然后读取命令行或脚本的编辑子命令,再对缓冲区的文本进行编辑
sed
适用于非常大的文本文件(使用交互型文本编辑器操作非常慢)、编辑命令比较复杂or在普通编辑器中难以完成、扫描一个大型文件并且需要经过一系列操作
(2)sed语法规则:
grammar:sed [nefri] command file
options:
-n:安静模式,只输出处理的
-e:不编辑源文件,默认选项
-f:输出一个文件
-r:支持正则
-i:直接修改文件
(3)sed常用命令:
命令 | 举例说明 |
---|---|
a 追加 |
sed 'la hello world' |
i 插入 |
sed '2,3i xxxx' |
c 替换行 |
sed '1,2c hello world' |
p 打印 |
sed -n '2,$p' |
d 删除 |
sed '1d' 、sed '$d' 、sed '2,$f' |
s 替换字符 |
sed -n 's/xxx/yyy/g' |
注意插入和追加的不同:插入是将语句追加到后边、插入则是插入到某一行
3.Linux三剑客之awk:
awk是一种强大的数据处理工具、也是一种编程语言环境
(1)awk语法规则:
grammar:awk [-Ffv] 'BEGIN{commands} pattern{commands} END{commands}' file
options:
-F fs:指定输出分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
awk命令执行过程:
1.执行BEGIN{commands}语句块中的语句
2.从文件或stdin中读取一行,执行pattern{commands}逐行扫描文件,从第一行到最后一行重复这个过程
3.当读至输入流末尾时,执行END{commands}语句块
转载:https://blog.csdn.net/weixin_49167174/article/details/117048406
查看评论