用户工具

站点工具


侧边栏

linux三剑客:sed

sed命令概述说明

sed命令: 字符流编辑工具(行编辑工具)==按照每行中的字符进行处理操作

sed命令作用说明:

  1. 擅长对行进行操作处理
  2. 擅长将文件的内容信息进行修改调整/删除

sed命令的语法信息

sed[OPTION]{script-only-if-no-other-script}[input-file]
命令 参数 条件+处理= (指令) 处理文件信息
#显示出文件中有oldboy行的信息
sed -n '/oldboy/p' oldboy.txt

常用参数

参数作用
-n取消默认输出【不可与-i同用!】
-r识别扩展正则
-i真实编辑文件(将内存中的信息覆盖到磁盘中)【不可与-n同用!】
-e识别sed命令多个操作指令

常用指令

参数英文 作用
p print 输出信息
i insert 插入信息,在指定信息前面插入新的信息
a append 附加信息,在指定信息后面附加新的信息
d delete 删除指定信息
s substitute替换信息 s###g(全局替换)
c 替换修改指定的一整行信息

sed查询

根据文件内容的行号进行查询:

#测试1: 显示单行信息
sed -n '3p' person.txt 
    103,Alex,COO
#测试2: 根据行号信息,输出多行内容(连续)
sed -n '1,3p' person.txt 
    101,oldboy,CEO
    102,zhaoyao,CTO
    103,Alex,COO
#测试3: 根据行号信息,输出多行内容(不连续)
sed -n '1p;3p' person.txt 
    101,oldboy,CEO
    103,Alex,COO

根据文件内容的信息进行查询:

#根据内容信息,输出单行内容
sed -n '/oldboy/p' person.txt
#根据内容信息,输出多行内容(连续)
sed -n '/oldboy/,/Alex/p' person.txt
#根据内容信息,输出多行内容(不连续)
sed -n '/oldboy/p;/Alex/p' person.txt

sed命令添加信息方法

#在文件第一行添加信息:
sed  '1i100,oldgirl,UFO' person.txt
#在文件最后一行添加信息:
sed  '$a108,oldgirl,UFO' person.txt
#在有oldboy行的前面添加oldgirl 后面添加olddog信息
sed -e '/oldboy/ioldgirl' -e  '/oldboy/aolddog' person.txt
#添加多行信息(\n为换行符)
sed  '$a100\n101' person.txt

sed命令删除信息方法

删除单行信息

#删除文件中第三行信息
sed '3d' person.txt 
#删除多行信息2到6行用,2和6行用;
sed '2,6d' person.txt 
sed '2;6d' person.txt 
#删除有oldboy信息的行
sed '/oldboy/d' person.txt 
#如何利用sed命令取消空行显示
sed -n '/./p' person.txt 
sed '/^$/d' person.txt 
sed -n '/^$/!p' person.txt 

sed命令修改信息方法

sed ‘s#原有内容#修改后内容#g’ 文件信息

sed ‘s#()##g’ 文件信息 后项引用前项进行替换修改

#利用sed命令取出IP地址信息:
#第一个历程: 取出有IP地址的行
ip a s eth0|sed -n '3p'
#第二个历程: 取出IP地址
ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'
10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g'
 10.0.0.200
 #sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g'  进行整合
 ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g'
 #sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g'  进行整合
 sed -n '3                        p'
sed -r 's#^.*net (.*)/24.*#\1#g'
sed -rn '3s#^.*net (.*)/24.*#\1#gp'  
#最终取IP地址方法
ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'

自动备份

-i后加入要添加的后缀,常用为.bak

sed -i.bak  's#oldboy#oldold#g' person.txt 

-i,-n不能同时使用

ni和参数同时使用,会将文件内容进行清空

linux三剑客/sed.txt · 最后更改: 2022/06/26 06:48 由 pwbty