首页 > 技术文章 > Linux-sed命令使用笔记

hydd 2020-08-04 13:39 原文

 

  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}'
 

推荐阅读