【Linux学习】08:Linux三剑客grep、sed、awk

08 Linux三剑客—grep、sed、awk


目录

  • 08 Linux三剑客—grep、sed、awk
        • 1.正则表达式:
          • (1)单个字符匹配:
          • (2)一组字符匹配:
          • (3)元字符:
          • (4)POSIX字符类:
          • (4)重复匹配:
        • 2.Linux三剑客之sed:
          • (1)sed基本概念:
          • (2)sed语法规则:
          • (3)sed常用命令:
        • 3.Linux三剑客之awk:
          • (1)awk语法规则:

1.正则表达式:

正则表达式:对文本进行过滤的工具

【Linux学习】08:Linux三剑客grep、sed、awk_第1张图片

(1)单个字符匹配:
说明 命令
普通字符匹配(忽略大小写) i
单个任意字符匹配 .
特殊字符匹配 \元字符转义

【Linux学习】08:Linux三剑客grep、sed、awk_第2张图片

(2)一组字符匹配:
说明 命令
多个字符中的某一个的匹配 []
利用字符集合区间的匹配 [0-9a-zA-Z]
排除字符的匹配 [^a-z]

【Linux学习】08:Linux三剑客grep、sed、awk_第3张图片

(3)元字符:
说明 命令
空白字符匹配 \b\f\t\v(win:\n\r
特定数字元字符匹配 \d\D
特定字母元字符匹配 \w\W
特定空白字符 \s\S
16或8进制匹配 \x\0

【Linux学习】08:Linux三剑客grep、sed、awk_第4张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第5张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第6张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第7张图片

(4)POSIX字符类:
方括号表达式 说明
[[ :alnum: ]] 所有字母和数字,等价于[0-9a-zA-Z]
[[ :digit: ]] 所有数字,等价于[0-9]
[[ :alpha: ]] 所有字母,等价于[a-zA-Z]
[[ :upper: ]] 大写字母,等价于[A-Z]
[[ :lower: ]] 小写字母,等价于[a-z]
[[ :black: ]] 空白

【Linux学习】08:Linux三剑客grep、sed、awk_第8张图片

(4)重复匹配:
说明 命令
1个或多个匹配 +
0个或多个匹配 *
0个或1个匹配 ?
重复匹配的次数 {2,4}

【Linux学习】08:Linux三剑客grep、sed、awk_第9张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第10张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第11张图片

2.Linux三剑客之sed:

(1)sed基本概念:

sed是一个非交互式的文本编辑器

sed从文件或标准输入中每次读取一行数据,并复制到缓冲区里,然后读取命令行或脚本的编辑子命令,再对缓冲区的文本进行编辑

sed适用于非常大的文本文件(使用交互型文本编辑器操作非常慢)、编辑命令比较复杂or在普通编辑器中难以完成、扫描一个大型文件并且需要经过一系列操作

(2)sed语法规则:

grammarsed [nefri] command file

options

-n:安静模式,只输出处理的

-e:不编辑源文件,默认选项

-f:输出一个文件

-r:支持正则

-i:直接修改文件

【Linux学习】08:Linux三剑客grep、sed、awk_第12张图片

(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'

【Linux学习】08:Linux三剑客grep、sed、awk_第13张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第14张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第15张图片

注意插入和追加的不同:插入是将语句追加到后边、插入则是插入到某一行

【Linux学习】08:Linux三剑客grep、sed、awk_第16张图片

【Linux学习】08:Linux三剑客grep、sed、awk_第17张图片

3.Linux三剑客之awk:

awk是一种强大的数据处理工具、也是一种编程语言环境

(1)awk语法规则:

grammarawk [-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}语句块

你可能感兴趣的:(Linux,linux)