前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux sed命令详解

Linux sed命令详解

作者头像
Y大宽
发布2019-05-22 23:02:03
3.3K0
发布2019-05-22 23:02:03
举报
文章被收录于专栏:Y大宽Y大宽

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

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

1 sed基本格式

第一种

代码语言:javascript
复制
sed 参数 '脚本语句(/pattern/action)' 待操作文件

第二种

代码语言:javascript
复制
sed 参数  -f '脚本文件' 待操作文件

参数

sed参数

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

代码语言:javascript
复制
$ cat seqtest
代码语言:javascript
复制
#! /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

追加到后面

代码语言:javascript
复制
$ sed '4a this is an added line' seqtest

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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ sed -i '4a this is an added line' seqtest
代码语言:javascript
复制
$ 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 删除某行

代码语言:javascript
复制
$ sed '5d' seqtest
代码语言:javascript
复制
#! /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

代码语言:javascript
复制
r$ sed 's/BUF/buffer/g' seqtest
代码语言:javascript
复制
#! /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命令

代码语言:javascript
复制
$ sed -n '/BUF/p' seqtest
read BUF
case "$BUF" in

如果不加-n是下面输出

代码语言:javascript
复制
$ 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 某字符的特殊模式

代码语言:javascript
复制
$ 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 明白下面例子

代码语言:javascript
复制
$ 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!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 sed基本格式
    • 第一种
      • 第二种
      • 2 行追加a
      • 3 删除某行
      • 4 插入某行 和a用法一样,只是追加到行前
      • 5 替换命令s
      • 6常用sed命令
        • 6.1打印包含特定字符的行
        • 6.2 某字符的特殊模式
        • 7 sed扩展sed -r
        • 8 sed一次指定多条不同的替换命令,用";"隔开
        • 9 明白下面例子
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档