用户工具

站点工具


linux三剑客:sed

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

linux三剑客:sed [2022/06/26 06:48] (当前版本)
pwbty 创建
行 1: 行 1:
 +====== sed命令概述说明 ======
 +
 +sed命令: 字符流编辑工具(行编辑工具)==按照每行中的字符进行处理操作
 +
 +sed命令作用说明:
 +
 +  - 擅长对行进行操作处理
 +  - 擅长将文件的内容信息进行修改调整/删除
 +
 +====== sed命令的语法信息 ======
 +
 +^sed^[OPTION]^{script-only-if-no-other-script}^[input-file]^
 +|命令 |参数      |条件+处理= (指令)                     |处理文件信息      |
 +
 +<code shell>
 +#显示出文件中有oldboy行的信息
 +sed -n '/oldboy/p' oldboy.txt
 +</code>
 +
 +===== 常用参数 =====
 +
 +^参数^作用                             ^
 +|-n|取消默认输出【不可与-i同用!】               |
 +|-r|识别扩展正则                         |
 +|-i|真实编辑文件(将内存中的信息覆盖到磁盘中)【不可与-n同用!】|
 +|-e|识别sed命令多个操作指令                  |
 +
 +===== 常用指令 =====
 +
 +^参数^英文        ^作用                ^
 +|p |print     |输出信息              |
 +|i |insert    |插入信息,在指定信息前面插入新的信息|
 +|a |append    |附加信息,在指定信息后面附加新的信息|
 +|d |delete    |删除指定信息            |
 +|s |substitute|替换信息 s###g(全局替换)  |
 +|c |          |替换修改指定的一整行信息      |
 +
 +====== sed查询 ======
 +
 +===== 根据文件内容的行号进行查询: =====
 +
 +<code>
 +#测试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
 +</code>
 +
 +===== 根据文件内容的信息进行查询: =====
 +
 +<code>
 +#根据内容信息,输出单行内容
 +sed -n '/oldboy/p' person.txt
 +#根据内容信息,输出多行内容(连续)
 +sed -n '/oldboy/,/Alex/p' person.txt
 +#根据内容信息,输出多行内容(不连续)
 +sed -n '/oldboy/p;/Alex/p' person.txt
 +</code>
 +
 +====== sed命令添加信息方法 ======
 +
 +<code>
 +#在文件第一行添加信息:
 +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
 +</code>
 +
 +====== sed命令删除信息方法 ======
 +
 +===== 删除单行信息 =====
 +
 +<code>
 +#删除文件中第三行信息
 +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 
 +</code>
 +
 +====== sed命令修改信息方法 ======
 +
 +sed ‘s#原有内容#修改后内容#g’ 文件信息
 +
 +sed ‘s#()##g’ 文件信息 后项引用前项进行替换修改
 +
 +<code>
 +#利用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 '                       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'
 +</code>
 +
 +===== 自动备份 =====
 +
 +-i后加入要添加的后缀,常用为.bak
 +
 +<code>
 +sed -i.bak  's#oldboy#oldold#g' person.txt 
 +</code>
 +
 +===== -i,-n不能同时使用 =====
 +
 +ni和参数同时使用,会将文件内容进行清空
  
linux三剑客/sed.txt · 最后更改: 2022/06/26 06:48 由 pwbty