Linux的sed命令和python脚本一起,可以对文本进行快速的修改。比如在删除日志的时候,python写出固定日期删除脚本,再用sed循环将python脚本的日期修改调用,就可以批删除指定日期的日志,以下是sed命令的用法笔记。
一、关键字
1.a :新增, a 的后面可以接字串,这些字串会下一行出现
//在第二行后添加drink tea,并使用nl带行号输出
nl /etc/passwd | sed '2a drink tea'
nl /etc/passwd | sed '2i drink tea'
2.i :插入,i 的后面可以接字串,这些字串会上一行出现
//在第二行前面添加drink tea
nl /etc/passwd | sed '2i drink tea'
注:如果要添加多行,需要用反斜杠隔开 ‘\’
3.d :删除,删除文本中的特定行;
//删除2-5行
nl /etc/passwd | sed '2,5d'
//删除3-底行
nl /etc/passwd | sed '3,$d'
//删除包含/root/的行
nl /etc/passwd | sed '/root/d'
4.c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
//将2-5行换成一行:No 2-5 number
nl /etc/passwd | sed '2,5c No 2-5 number'
5.p :打印,将选择的数据印出。通常 p 会与参数 sed -n 一起运行
//只显示5-7行
nl /etc/passwd | sed -n '5,7p'
//搭配-n使用,-n只显示与/root/匹配的内容
nl /etc/passwd | sed -n '/root/p'
6.s :取代,可以直接进行取代
语法:sed 's/要被取代的字串/新的字串/g'
//找到root对应的行,执行后面花括号中的一组命令,这里把bash替换为blueshell,再输出这行,最后的q是退出
nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'