网站建设遵循的原则,wordpress 页 定制,淮安市淮阴区建设局网站,成武网站建设了解三剑客 三剑客指的是: grep、sed和awk这三个在linux系统中常用的命令行工具 shell三剑客
grep#xff1a; 主要用于查找和过滤特定文本
sed#xff1a;是一个流编辑器#xff0c;可以对文本进行增删改查
awk#xff1a;是一个文本处理工具#xff0c;适合对列进行处…了解三剑客 三剑客指的是: grep、sed和awk这三个在linux系统中常用的命令行工具 shell三剑客
grep 主要用于查找和过滤特定文本
sed是一个流编辑器可以对文本进行增删改查
awk是一个文本处理工具适合对列进行处理和分析。它不仅可以进行查找和替换还能执行数学计算和数据统计
shell三剑客试用场景
1.日志处理与搜索:使用grep 搜索关键词,结合sed和awk进行进一步处理和分析
2.配置文件管理: 使用sed和awk进行批量修改、添加、或删除配置项。
3.数据提取和转换利用awk提取、分析和转换结构化文本数据处理CSV、JSON等格式
4.监控与报警使用grep、sed和awk提取关键信息生成监控报告监控系统状态和性能
5.日常运维任务自动化任务如查找过期文件、清理日志、统计日志大小等。
6.系统管理使用sed和awk处理系统状态信息如用户信息、进程信息、磁盘使用情况等。
shell三剑客之grep指令
基本语法grep 选项 内容 文件
记住都是常见一些选项
支持的正则描述-E,--extended-regexp模式是扩展正则表达式(ERE) 字符簇、()、|或-P,--perl-regexp模式是Perl正则表达式 \d、\w、\s-i,--ignore-case忽略大小写-w,--word-regexp模式匹配整个单词-v--invert-match打印不匹配的行取反
了解能记住最好记不住作为了解使用的时候查看文档
输出控制描述-n,--line-number打印行号-o,--only-matching只打印匹配的内容-r,--recursive递归目录-c,--count统计匹配行数
练习
准备数据集 # vim demo.txt Hello, this is an example file. It contains some lines of text. Lets use grep to search for specific patterns. 在文件中搜索包含单词 example 的行 grep example demo.txt shell三剑客之sed指令 语法格式:sed 【选项】 【sed命令】 【输入文件】 说明
① 注意sed软件以及后面选项sed命令和输入文件每个元素之间都至少有一个空格。
② 为了避免混淆笔记中称呼sed为sed软件。sed -commands(sed命令)是sed软件内置的一些命令选项为了和前面的options选项区分故称为sed命令
③ sed -commands 既可以是单个sed命令也可以是多个sed命令组合。
④ input -file (输入文件)是可选项sed还能够从标准输入如管道获取输入。
sed软件有两个内置的存储空间
☆ 模式空间pattern space是sed软件从文本读取一行文本然后存入的缓冲区这个缓冲区是在内存中的然后使用sed命令操作模式空间的内容。
☆ 保持空间hold space是sed软件另外一个缓冲区用来存放临时数据也是在内存中但是模式空间和保持空间的用途是不一样的。sed可以交换保持空间和模式空间的数据一般都是将保持空间的数据拿到模式空间进行操作但是不能在保持空间上执行普通的sed命令也就是说我们可以在保持空间存储数据。 模式空间临时存放数据然后通过sed命令进行加工处理处理完成后打印到屏幕然后清空模式空间 保持空间存储数据以后我们操作一行文本的时候真的所有的时候都只能一行一行操作吗答有的时候会对多行内容进行操作当然你对内容进行多行操作的时候就可以把数据放在 保持空间 sed选项说明
记住常用的三个选项
option[选项]解释说明带*的为重点-n取消默认的sed软件的输出常与sed命令的p连用*-r使用扩展正则表达式grep -E默认情况sed只识别基本正则表达式*-i直接修改文件内容而不是输出到终端如果不使用-i选项sed软件只是修改在内存(模式空间)中的数据并不会影响磁盘上的文件*
记住几个常用
sed -commands解释说明带*的为重点aappend追加在指定行后添加一行或多行文本*cchange取代指定的行ddelete删除指定的行*iinsert插入在指定行前添加一行或多行文本*pprint打印模式空间内容通常p会与选项-n一起使用*q退出sedr从指定文件读取数据s取代s#old#new#g这里g是s命令的替代标志注意和g命令区分。* 重点记住增删改查操作 增加a、删除d、修改c或s、查询p sed添加操作 # cat person.txtEOF 101,Tom,CEO 102,Rose,CTO 103,Alex,COO 104,Jack,CFO 105,Jennifer,CIO EOF 命令说明使用一条cat命令创建多行文本文件包含上面的内容后面的操作都会使用这个文件。 单行操作 sed 2a 106,Smith,CSO person.txt 注 2代表指定对第2行操作其他的行忽略 a代表追加的意思2a即在第2行后追加文本 2a后面加上空格然后跟上你想要插入的多行文本即可。这里的每行文本使用\n连接就可以写成一行了。 注意以上2a也可以调整为2i代表在第2行的前面添加一行 多行操作 sed 2a 106,Eric,CSO\n107,Susan,CCO person.txt 注\n代表换行符 sed默认操作文件内容是在内存中的模式空间中进行实现不会影响原文件内容。
增加操作有两种方式行号 i指定行前面添加内容行号 a指定行后面添加内容
如果希望增加操作影响原文件可以添加一个选项-i
sed删除操作记住d
删除指定行文本。 注意建议删除的时候 使用 单引号 案例1下面用具体的例子演示一下sed删除操作实现 # sed d person.txt 命令说明如果在sed命令前面不指定地址范围那么默认会匹配所有行然后使用d命令删除功能就会删除这个文件的所有内容 案例2 # sed 2d person.txt 命令说明这个单行删除想必大家能理解指定删除第2行的文本 案例3 # sed 2,5d person.txt 命令说明25d 指定删除第2行到第5行的内容d代表删除操作。 案例4 sed /Jack/d person.txt 命令说明在sed软件中使用正则的格式和awk一样使用2个/包含指定的正则表达式即/正则表达式/。 案例5 # sed /Tom/,/Alex/d person.txt 命令说明这是正则表达式形式的多行删除也是以逗号分隔2个地址最后结果是删除包含Tom的行到包含Alex的行 案例6 # sed 3,$d person.txt 命令说明学过正则表达式后我们知道$代表行尾但是在sed中就有一些变化了$在sed中代表文件的最后一行。因此本例子的含义是删除第3行到最后一行的文本包含第3行和最后一行因此剩下第12行的内容。 案例7在最后一行追加 内容 # sed $a 106,Tom,CSO person.txt 命令说明为了不造成同学们实验文本改来改去导致不同意因此我用上面的命令语句只是临时修改内存数据然后通过管道符号传给sed软件。 小结
sed软件不仅可以添加数据行也可以删除数据行删除数据行必须使用d命令
sed删除软件 sed 范围d 文件 默认都是在内存中完成需要影响原文件则添加一个-i
sed匹配原则匹配内容 d如3,5d 删除从第三行-第五行的内容
sed修改操作重点要记住c和s
cchange缩写替换指定行以行为单位
s : s/旧的内容/替换后内容/g 或 s#旧的内容#替换后内容#g以关键词为单位
注意不建议使用 /建议使用 #因为/ 容易 混淆比如说我的内容中就有 /如果要替换了那是不是要加转移字符\/
为什么使用#作为标识符因为如果文件路径的替换/root、/etc刚好与边界符号冲突了 sed修改操作我们最常见的操作就是改配置文件改参数等等 首先说一下按行替换这个功能用的很少所以大家了解即可。这里用到的sed命令是c用新行取代旧行记忆方法c的全拼是change意思是替换。
sed查询操作记住-np
sed命令
p输出指定内容但默认会输出2次匹配的结果因此使用-n选项取消默认输出记忆方法p的全拼是print意思是打印。
Shell三剑客之awk指令
awk格式
awk指令是由模式动作或者模式和动作的组合组成。
可以理解为我们的模式和动作选项中可以 只有模式(意味着你要所有的内容)也可以只有动作也可以有 模式动作
模式既pattern,可以类似理解成sed的模式匹配可以由表达式组成也可以是两个正斜杠之间的正则表达式。比如NR1这就是模式可以把他理解为一个条件。
动作即action是由在大括号里面的一条或多条语句组成语句之间使用分号隔开。 options既参数使用最多的参数为-FField用于指定字段与字段之间的分隔符列与列之间的分隔符默认为空格
pattern既模式也可以理解为条件也叫找谁你找谁高矮胖瘦男女都是条件既模式。
action既动作可以理解为干啥找到人之后你要做什么。
注意awk -F分隔符 模式和动作 file -F后面跟是双引号模式和动作要使用单引号进行包裹 基本模式与动作 # awk -F : NR2 NR6{print NR,$1} /etc/passwd 2 bin 3 daemon 4 adm 5 lp 6 sync 命令说明 -F 指定分隔符为冒号相当于以“”为菜刀进行字段的切割。 NR2 NR6这部分表示模式是一个条件表示取第2行到第6行。 {print NR,$1}这部分表示动作表示要输出NR行号和$1第一列。 $1代表第1列 $2代表第2列 依次类推 NR Number数字、号码 Record记录、行 行号
awk执行过程
解析:
① awk读入第一行内容
② 判断是否符合模式中的条件NR2
如果匹配则执行对应的动作{print $0}
如果不匹配条件继续读取下一行
③ 继续读取下一行
④ 重复过程1-3直到读取到最后一行EOFend of file awk记录行
名称含义record记录行 NRNumber Record行号field域区域字段列 NFNumber Field列号$NF代表最后一列
awk默认情况下每一行都是一个记录record
① RS既record separator输入输出数据记录分隔符每一行是怎么没的表示每个记录输入的时候的分隔符既行与行之间如何分隔默认为\n可以调整为其他字符。
② NR既number of record 记录行号表示当前正在处理的记录行的号码。
③ ORS既output record separator 输出记录分隔符。
awk使用内置变量RS来存放输入记录行与行分隔符RS表示的是输入的记录分隔符这个值可以通过BEGIN模块重新定义修改。
NR行号打印行号
NFNF代表列号如果前面添加了$则代表最后一列
$0整行内容
awk字段列
每条记录都是由多个区域field组成的默认情况下区域之间的分隔符是由空格即空格或制表符来分隔并且将分隔符记录在内置变量FS中每行记录的区域数保存在awk的内置变量NF中。
awk分隔符
如果采用默认分隔符切割内容如果左边有一大批空白内容则默认分隔符会自动忽略此内容。 如果采用人为设定分隔符切割内容如果左边有一大批空白内容则人为设定的分隔符会对这块内容进行切割。
awk模式与动作进阶
awk模式与动作
接下来就详细介绍下awk的模式都有几种
☆ 正则表达式作为模式
☆ 比较表达式作为模式 NR2
☆ 范围模式 NR2 NR 5
☆ 特殊模式BEGIN和END
BEGIN模式与END模式
BEGIN模块在awk读取文件之前就执行一般用来定义我们的内置变量预定义变量eg:FSRS),可以输出表头类似excel表格名称
BEGIN模式之前我们有在示例中提到自定义变量给内容变量赋值等都使用过。需要注意的是BEGIN模式后面要接跟一个action操作块包含在大括号内。awk必须在输入文件进行任何处理前先执行BEGIN里的动作action。我们可以不要任何输入文件就可以对BEGIN模块进行测试因为awk需要先执行完BEGIN模式才对输入文件做处理。BEGIN模式常常被用来修改内置变量ORSRSFSOFS等值 数据集 # cat /server/files/awkfile.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin BEGIN模块完整写法BEGIN{} # awk -F: BEGIN{print username,UID}{print $1,$3} awkfile.txt username UID #这就是输出的表头信息 root 0 bin 1 daemon 2 adm 3 lp 4 sync 5 shutdown 6 halt 7 mail 8 uucp 10 ☆ END模式
作用与BEGIN相呼应在awk处理文件结束后会自动触发END模块只会触发1次
基本语法: awk 动作 END{print xxx} 应用场景说明 awk执行结束用于实现收尾操作 ① 数学计算中输出最终结果 ② 输出最后一行等等