文本三剑客
目录
1.文本三剑客
2.awk
常见的内置变量
3.sed
选项:
脚本语法:
查找替换:
步进:
1.文本三剑客
awk;sed;grep
读取方式为:vim先将整个文件放入内存中进行编辑;awk是先将文件中的一行读取处理一行,在每一列处理;sed也是将读取一行处理一行
2.awk
awk可以对文件;标准输出;重定向进行处理。
命令格式:awk 选项 ‘BEGIN处理动作END’ 对象
-F 选择以什么作为分隔符
-v 变脸赋值
常见的内置变量
- FS :指定每行文本的字段分隔符,缺省默认为空格或制表符(tab)。与 “-F”作用相同 -v "FS=:"
- OFS:输出时的分隔符
- NF:当前处理的行的字段个数
- NR:当前处理的行的行号(序数)
- $0:当前处理的行的整行内容
- $n:当前处理行的第n个字段(第n列)
- FILENAME:被处理的文件名
- RS:行分隔符。awk从文件上读取资料时,将根据RS的定义就把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是\n
3.sed
命令格式:
sed 选项 '脚本语法' 对象
选项:
-n 不自动打印
-e 多个编辑
-f 从指定文件中读取编辑脚本
-r,-e 使用扩展正则表达式
-i 备份文件并在原出编辑
-i.bak 备份文件并增加后缀名(.bak)
注:-ir 不可使用;-ri可使用;-i -r 可使用
脚本语法:
地址+命令(不写地址,默认全文)($最后一行)
'空' 标准输出
'3p' 打印第三行
'$p' 打印最后一行
'//p' '//'内可以使用正则表达式
'3,6p' 打印出3到6行
'3,6p;1p' 打印出3到6行与第1行
'/^b/,/^g/p' 打印出b开头行到g开头行的所有行
'3q' 打印到第3行退出
'2d' 删除第2行
'1,2d' 删除1到2行
'2a123' 在第2行下1行加入123
'2i123' 在第2行位置插入123
'2c123' 将第2行替换为123
'2a123\n123' 在第2行下2行加入123
查找替换:
类似于vim:‘s/想要改的对象/改后的内容/g’
步进:
1~2 从1开始往后走2行
2~2 从2开始往后走2行