Linux sed命令详解

≯℡__Kan透↙ 提交于 2019-11-26 13:05:50

sed是一种常见的流编辑器,可依照脚本的命令来处理、编辑文本文件,并且完美匹配正则表达式,功能强大。

1、sed命令语法:

sed [option] 'SCRIPTS' FILE...
sed [-hHV][-e<script>][-f<script文件>][文本文件] 

2、sed命令功能:

[option]
  • -e
  • -f
  • -h或H显示帮助。
  • -n 取消默认的完整输出,仅显示script处理后的结果。
  • -V 显示版本信息。
[动作命令]
  • a 新增,a后接字串,并在新一行出现。
  • ,“a” 最后一行新增字串。
  • c 取代,用此符号后的新文本替换当前行中的文本。
  • d 删除行
  • i 插入,i 的后面可以接字串。
  • p 打印,常与“sed -n"连用。
  • s 取代,与g连用,常与正则表达式搭配使用,例如例如1,20s/old/new/g。
  • n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理。
  • q 结束或退出sed。
  • w 将所选的行写入文件。
  • r 从文件中读取输入行。
  • y 将字符替换为另一字符,正则表达式除外。
  • l 列出非打印字符,包括控制字符。
  • -iSUFFIX 修改源文件,同时创建一个备份文件。例如:sed -i.bak '1,10d' test,生成一个test.bak备份文件。

    高级语法
  • h/H 复制拷贝/追加模式空间(缓冲区)到存放空间
  • g/G 粘贴 从存放空间取回/追加到模式空间
  • x 两个空间内容的交换
  • n/N 拷贝/追加下一行内容到当前
  • D 删除\n之前的内容
  • P 打印\n之前的内容
  • b 无条件跳转
  • t 满足匹配后的跳转
  • T 不满足匹配时跳转

3、实例

image

3.1只打印3行

sed -n '3p' /tmp/text.txt

image

3.2打印第5到第10行

sed -n '3,10p' /tmp/text.txt

image

3.3在第1行到第4行的每行添加1234567890

sed '1,5i 1234567890' /tmp/text.txt

image

3.4删除"1234567890"

sed '/1234567890/ d ' /tmp/text.txt
image

3.5打印5-10行,并显示行号

sed -n -e '5,10p' -e '=' /tmp/text.txt
image

3.6将第三行内容替换为glibc

sed '3cglibc' /tmp/text.txt

3.7删除空行

sed '/^$/d' newfile >> /tmp/text.txt

3.8把fstab中包含xfs的记录(行)写入新的文件中

sed '/xfs/w newfile' /tmp/text.txt

posted @ 2019-08-08 16:03 梦想家船长 阅读(...) 评论(...) 编辑 收藏
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!