一、流编辑器sed
1、sed的工作方式
sed通过对输入数据执行任意数量用户指定的编辑操作。sed是基于行的,因此按顺序对每一行执行命令。然后,sed将其结果写入标准输出(stdout),它不修改任何输入文件。
2、sed命令格式
调用sed命令有两种形式
sed [选项] '命令' file(s)
sed [选项] -f script file(s)
3、sed对字符的处理
- p 显示
- d 删除
- a 添加
- c 替换
- w 写入
- i 插入
sed命令的选项(option):
-n :只打印模式匹配的行(仅显示处理后的结果)
-e :直接在命令行模式上进行sed动作编辑,此为默认选项
-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-r :支持扩展表达式
-i :直接修改文件内容
4、p模式操作
例子:
(1)打印只匹配:的行
(2)只打印以UUID开头的行
(3)只打印文件的第二行到第六行
5、d模式操作
(1)删除以UUID开头的行
(2)删除1-4行
6、a操作模式
给以UUID开头的行尾部追加hello
7、i操作模式
在以UUID开头的行首插入hello
8、c操作模式
把以UUID开头的行替换为hello world
9、w操作模式
二、awk报告生成器
awk 处理机制:awk 会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行做一些总结性质的工作,在命令格式上分别体现如下:
BEGIN{}:读入第一行文本之前执行,一般用来初始化操作
{}:逐行处理,逐行读入文本执行相应的处理,是最常见的编辑指令快
END{}:处理完最后一行文本之后
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
awk -F #-F相当于内置变量FS, 指定分割字符
内置变量:
NF 一条记录的字段的数目(列数)
NR 已经读出的记录数,就是行号,从1开始
练习:
(1)找出系统可以登录的用户并统计个数
(2)找出可登录的用户但是家目录不在/home下
统计可登录的用户但是家目录不在/home下个数
显示一个文件的行数:
抓取网卡的ip