sed文本处理工具
sed:类似于vim就是一个文本编辑器,按行来进行编辑和处理
grep sed awk:文本三剑客都是针对文件内容的行来进行处理
sed的主要作用就是针对文本内容增删改查
sed可以支持正则表达式,也可以支持扩展正则表达式
sed的原理:读取,执行命令,显示三个过程
读取:读取文本内容之后,读取到的内容存放到临时的缓冲区,模式空间
执行:在模式空间,根据读取的文本内容,按行执行,除非指定行号,否则会遍历所有行,依次执行,从上往下执行
显示:执行完之后,把执行结果打印,如果要改变生效,模式空间被修改的内容会写入到指定的文件当中,指示操作,但是不最终写入文件,只展示结果,展示完之后,模式空间的数据会立即删除
sed文本内容处理工具
面试题
文件过大怎么办
split-l
split-b
cat 文件名 | sed 处理------中型文件,大型文件还是先分割的好
sed的实际操作
sed-e “操作” 文件1 -e “操作”文件2
只对一个文件操作,可以不加-e
常用选项
-e 条件操作选项
-f 指定脚本文件来进行处理输入的文件内容,把命令写在脚本里,用脚本里的命令来处理第二个文件里面的内容
-i 立即生效 慎用
-n 显示script处理之后的结果 (禁止sed的默认输出)
操作符:
s:替换 替换指定字符
d:删除,删除指定的行
a:增加,在当前行的下面插入指定的内容
i:增加,在指定行的上面插入执行的内容
c:替换,替换整行
y:替换字符,但是替换前后的字符长度必须一致123 456
p:打印 sed ' '打印
r:使用扩展正则
sed的核心就是改,删,增,查没有grep强大
sed 自己有一个默认输出,p打印会额外再打印一行
' = '只输出行号
打印指定行
'$p'打印最后一行
打印1-3行
打印偶数行
打印奇数行
文本过滤模式
1、对包含指定字符串的内容进行打印(所有包含的行都会打印)
2、应用基础正则表达式进行打印(以root为开头)
以bash结尾
3、扩展正则表达式
在etc passwd当中过滤出root开头 或者bash结尾所在的行
面试题: 怎么样不进入文件就可以删除文件当中的内容,免交互删除。
sed -i 'd' ky30 不进入文件就可以删除文本当中的内容
cat /dev/null > ky30.txt 不进入文件就可以删除文本当中的内容
指定行号来进行删除,打印剩余行数
删除一到三行 , 删除一和三 ;
匹配字符串内容删除
!取反
包含one---six删除
删除空行
sed替换
s:替换字符串
c: 整行替换
y:单字符替换,前后长度要一致
默认替换第一个 p前面加数字替换第几个 p前面加g全部替换
字母字符大小写替换
大写换小写
l&:转换成小写的特殊符号,在使用时,需要转义符
u&:转换成大写的特殊符号,在使用时,需要转义符
g:全部替换,如果不加,只会更改首字符
整行替换c
y单字符替换
增加
a:在下一行添加 i:在上一行添加 r:在行后读入指定文件内容
第一个文件是要读取的文件,第二个是要指定操作的文件
sed命令当中字符串的位置进行交换