sed命令

1.一款流编辑工具,用于对文本进行过滤与替换

2.一次读取一行内容对某些指令进行处理

3.默认不直接修改源文件,而是将内容复制到模式空间进行处理并输出结果,默认输出至标准输出(即屏幕)

sed基本语法格式

image

选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
 
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何字符;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 
 

一、熟练掌握地址的表示方法--(结合选项n、指令=p

1、打印文件passwd的前两行

Sed -n “1,2 p” passwd

clip_image004

2、打印文件passwd的奇数行

Sed -n “1~2p” passwd

clip_image006

3、从第1行起,每隔五行打印一下文件passwd的内容

clip_image008

4、打印文件passwd包含root的行

clip_image010

5、打印文件passwdroot用户到mail用户之间的所有行

clip_image012

6、打印文件passwd最后一行

clip_image014

二、熟练掌握与有关的操作指令dcai

1、删除文件passwd的第一行

clip_image016

2、删除文件passwd的前五行

clip_image018

3、删除文件passwd的偶数行

clip_image020

4、删除文件passwd中不能登录的用户

clip_image022

5、同时删除文件dhcp中的空行和注释行

clip_image024

6、将文件ens中的UUID行改为“HWADDR=00:00:00:12:34:56”

clip_image026

7、在ens的末尾添加“DNS1=8.8.8.8”

clip_image028

8、在ens的每一行后添加空行

clip_image030

9、在ens中PREFIX行的上面添加注释“# you can usr NETMASK instead of PREFIX”

clip_image032

三、熟练掌握替换指令—s

1、将文件passwd每行出现的第一个root替换为admin

clip_image034

2、将文件passwd每行出现的所有root替换为admin

clip_image036

3、将文件passwd中的分隔符:改为空格

clip_image038

4、删除文件ens每行第一个字符

clip_image040

5、删除文件ens每行第二个字符

clip_image042

6、删除文件ens倒数第二个字符

clip_image044

7、删除文件group中的所有数字

clip_image046

8、交换文件ens每行的第一个字符和第二个字符

clip_image048

9、显示passwd中的第一个字段

clip_image050

16、显示passwd中的第一个字段和最后一个字段,中间用制表符间隔

clip_image052