10月17日任务
9.4/9.5 sed
首先创建一个sed目录
将grep里面的文件cp到sed中,重名名为 test
强项在于替换,替换一些指定的字符。
vim的时候,其中有一个功能叫做替换
root 替换成
sed '//'p test.txt // 中间是需要匹配的字符串
打印出所有的含root的行,不要多余的行的话
需要sed -n '/root/' p test.txt
// 中间也支持. * + 但是+需要使用脱义符号\
sed -nr
类似grep -E
sed -n '2'p test.txt 第二行
sed -n '2,5'p test.txt 从2 到5行
sed -n '2,$'p test.txt 从二到最后行
sed -n '1,$'p test.txt 全部行
sed -e '1'p -e'/bus/'p -n test.txt 打印第一行 匹配第二行的的
-e 的表达式可以并列写上,意思是第一行打印出来,第二个命令是指匹配bus的命令,也是可以重合的
grep的时候使用 -i 不区分大小写
再sed中 sed -n '/bus/'p test.txt 匹配的小写
sed中 sed -n '/bus/'Ip test.txt 加上了I 匹配出大写的
除了打印指定行,匹配指定行,还可以删除指定行
例如,删除日志的前五个月的记录
vim 打开文件,然后使用dd命令删除
直接使用grep 指定记录时间,匹配出有多少行,grep -n
然后使用sed 指定行进行删除
sed '1,25'd test.txt 这里的d仅仅是把剩下的行列出来,没删除。
sed -i '1,25'd test.txt直接删除了
sed -i '/user2/'d test.txt
sed的替换作用,类似于vim的查找替换很类似
首先指定范围
sed '1,10s/root/toor/g' test.txt
g全局替换
sed 记得用r 否则要使用脱义符
需求第一段和最后一段互换位置,首先要找到这两段,因为是使用:进行分割,所以先找到:
.* 是贪婪匹配,一直配到最后
之前使用vim 用到一个需求
将root替换到123 带有/的话 在替换的时候 要使用到脱义符,或者将/用@替换掉,只要能区分开
使用sed删除文档里面的英文字母删除
sed 's/[a-zA-Z]//'g
当需要把所有行的前面加上一个字符串
首先匹配前面额字符串
sed -r 's/(.*)/aaa.&/' 所有行之前加一个字符串