Linux sed命令详解

  • sed意为“流编辑器(stream editor)” 字符串筛选工具。
  • 对一个文档中的行进行操作

和vi编辑很相似。可以查看vim使用命令详解

1 sed基本格式

第一种

sed 参数 '脚本语句(/pattern/action)' 待操作文件

第二种

sed 参数  -f '脚本文件' 待操作文件

参数

sed参数

a 追加append i 插入insert d 删除delete s替换substitution

$ cat seqtest
#! /bin/sh

echo "Enter a Yes or no"
read BUF

case "$BUF" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

2 行追加a

追加到后面

$ sed '4a this is an added line' seqtest

执行上面命令后,只会屏幕上输出,而不会保存到文件中

$ sed '4a this is an added line' seqtest
#! /bin/sh

echo "Enter a Yes or no"
read BUF
this is an added line

case "$BUF" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

如果想要保存那就需要加一个参数-i

$ sed -i '4a this is an added line' seqtest
$ cat seqtest
#! /bin/sh

echo "Enter a Yes or no"
read BUF
this is an added line

case "$BUF" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

3 删除某行

$ sed '5d' seqtest
#! /bin/sh

echo "Enter a Yes or no"
read BUF

case "$BUF" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

4 插入某行 和a用法一样,只是追加到行前

5 替换命令s

r$ sed 's/BUF/buffer/g' seqtest
#! /bin/sh

echo "Enter a Yes or no"
read buffer
this is an added line

case "$buffer" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

6常用sed命令

6.1打印包含特定字符的行

相当于grep命令

$ sed -n '/BUF/p' seqtest
read BUF
case "$BUF" in

如果不加-n是下面输出

$ sed '/BUF/p' seqtest
#! /bin/sh

echo "Enter a Yes or no"
read BUF
read BUF
this is an added line

case "$BUF" in
case "$BUF" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

6.2 某字符的特殊模式

$ sed  's/BUF/-$-/g' seqtest
#! /bin/sh

echo "Enter a Yes or no"
read -$-
this is an added line

case "$-$-" in
   yes |Y|y|YES|Yes)
        echo "It's a yes.";;
      [nN]?)
          echo "It's a NO.";;
     *)
   echo "other case.";;
esac

echo "gong to return"
return 0
echo "going to return end"

7 sed扩展sed -r

和grep不同,sed用参数r进行扩展

8 sed一次指定多条不同的替换命令,用";"隔开

9 明白下面例子

$ sed 's/<[^<>*]>//g' t.html
<html><head><title>Hello World</title></head>
<body>Welcome to the world of regexp!</body></html>
$ sed 's/<[^<>]*>//g' t.html
Hello World
Welcome to the world of regexp!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏崔庆才的专栏

八个最致命的 Linux 命令!

rm -rf 命令是删除文件夹及其内容的最快方法之一。但是一点点错字或失误可能会导致不可恢复的系统损坏。与 rm 命令一起使用的一些选项是:

13150
来自专栏AI科技大本营的专栏

Python打造最强表白程序

情人节刚过,朋友圈又是刷屏的节奏。但热闹总是别人的,我们好像只有吃狗粮的份。时间总是飞快流逝,很多事情早已改变,但仿佛只有你的单身状态从未改变。

1.2K20
来自专栏纯洁的微笑

Linux 操作系统对程序员太太太重要了。

Linux 操作系统对程序员来说,简直太太太重要了,为什么呢,因为我们开发的程序,绝大部分都会部署到 Linux 服务中,那么排查问题的时候就看你对 Linux...

20030
来自专栏好好学java的技术栈

Linux 最常用命令(简单易学,但能解决95%以上的问题)

Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅...

11930
来自专栏崔庆才的专栏

如何使用 SSH 远程控制一台 Windows 服务器

入职微软之后,这边大多数是使用 Windows 进行开发的,比如我的台式机是 Windows 的,还有一部分服务器是 Windows 的,当然 Linux 是也...

78620
来自专栏Java架构沉思录

Linux服务器性能分析之CPU利用率

合理值:60-85%,如果在一个多用户系统中us+sy时间超过85%,则进程可能要花时间在运行队列中等待,响应时间和业务吞吐量会受损害;us过大,说明有用户进程...

26020
来自专栏皮振伟的专栏

[gcc][glibc]va_start嵌套导致的问题

使用tgt-1.0.75创建好target之后,在initiator端执行login操作大约卡3s~5s左右。同时观察tgt,CPU消耗到达100%。

15220
来自专栏AI派

ThunderGBM:快成一道闪电的梯度提升决策树

尽管近年来神经网络复兴并大为流行,但提升算法在训练样本量有限、所需训练时间较短、缺乏调参知识等场景依然有其不可或缺的优势。目前代表性的提升方法有 CatBoos...

8230
来自专栏数商云贸

电商网站一般用什么技术开发

目前国内网上电子商城系统技术构架可谓五花八门,从早期的ASP,到现在流行的.NET,都在电子商务领域应用的游刃有余。一个电子商务网站究竟用那项技术更好?其实也不...

22140
来自专栏Java架构筑基

Java程序员拼多多3轮面试,你撑得住几轮?

面试一直是大家关注的问题,包括最近有很多人跟我讲投了很多简历出去,就像泥牛入海一样了无音讯了,确实出于程序员的直觉,今年是要比往年要更冷一些。

18810

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励