Linux的sed命令详解大全

  • 一、sed命令介绍
  • 二、sed 的运行模式
  • 三、sed的相关选项
  • 四、sed基本用法
    • 1.sed语法
    • 2.sed的查看功能
      • ①查看passwd文件的第5到第8行内容
      • ②查看passwd文件中以roo开头的行
      • ③忽略大小写,对含有root字符的行打印出来
    • 3.sed的查找功能
    • 4.将 /data/passwd 第 2~5 行删除打印输出
    • 5.以行为单位的新增
      • ①在文件passwd上的第四行后面添加新字符串
      • ②passwd第1前追加huawei
    • 6.sed替换功能
      • ①passwd第三行替换为redhat
    • 7.sed的查找及替换功能
    • 8.sed对原文件操作
      • ①删除原文件第1行
      • ②修改原文件之前备份

一、sed命令介绍

sed全称是:Stream EDitor(流编辑器)
Linux sed 命令是利用脚本来处理文本文件,sed 可依照脚本的指令来处理、编辑文本文件。Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

二、sed 的运行模式

当处理数据时,Sed 从输入源一次读入一行,并将它保存到所谓的模式空间pattern space中。所有 Sed 的变换都发生在模式空间。变换都是由命令行上或外部 Sed 脚本文件提供的单字母命令来描述的。大多数 Sed 命令都可以由一个地址或一个地址范围作为前导来限制它们的作用范围。

三、sed的相关选项

 -n, --quiet, --silent    取消自动打印模式空间-e 脚本, --expression=脚本   添加“脚本”到程序的运行列表-f 脚本文件, --file=脚本文件  添加“脚本文件”到程序的运行列表--follow-symlinks    直接修改文件时跟随软链接-i[扩展名], --in-place[=扩展名]    直接修改文件(如果指定扩展名就备份文件)-l N, --line-length=N   指定“l”命令的换行期望长度--posix  关闭所有 GNU 扩展-r, --regexp-extended  在脚本中使用扩展正则表达式-s, --separate  将输入文件视为各个独立的文件而不是一个长的连续输入-u, --unbuffered  从输入文件读取最少的数据,更频繁的刷新输出--help     打印帮助并退出--version  输出版本信息并退出-a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~-c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!-d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;-i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);-p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~-s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法

四、sed基本用法

1.sed语法

Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

2.sed的查看功能

①查看passwd文件的第5到第8行内容

[root@control data]# sed -n '5,8 p' passwd
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

②查看passwd文件中以roo开头的行

[root@control data]# sed -n '/^roo/ p' passwd
root:x:0:0:root:/root:/bin/bash

③忽略大小写,对含有root字符的行打印出来

[root@control data]# sed -n '/root/I p' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

3.sed的查找功能

查找passwd文件中有/bin/bash字符串的行

[root@control data]# sed -n '\%/bin/bash% p' passwd
root:x:0:0:root:/root:/bin/bash
admin:x:1001:1001::/home/admin:/bin/bash
user1:x:1002:1002:test user:/home/user1:/bin/bash
ituser1:x:2002:2002::/data/itusers:/bin/bash
redhat:x:2003:2003::/home/redhat:/bin/bash
huawei:x:2004:2004::/home/huawei:/bin/bash
user3:x:2000:2000::/home/user3:/bin/bash
user2:x:2019:2019::/home/user2:/bin/bash
user4:x:2025:2025::/home/user4:/bin/bash
user5:x:2026:2026::/home/user5:/bin/bash
user6:x:2027:2027::/home/user6:/bin/bash
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
user99:x:2028:2028::/home/user99:/bin/bash

4.将 /data/passwd 第 2~5 行删除打印输出

[root@control data]# sed '2,5 d' passwd |head
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

5.以行为单位的新增

①在文件passwd上的第四行后面添加新字符串

root@control data]# sed -e 4a\it-test passwd | headrootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
it-test
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

②passwd第1前追加huawei

[root@control data]# sed '1 i\huawei ' passwd |head
huawei
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

6.sed替换功能

①passwd第三行替换为redhat

[root@control data]# sed '3 c\redhat' passwd
[root@control data]# sed '3 c\redhat' passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
redhat
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

7.sed的查找及替换功能

将passwd的5到10的bin字符串查找出来替换为aaaa

[root@control data]# sed -n '5,10 s/bin/aaaa/ p' passwd |head
lp:x:4:7:lp:/var/spool/lpd:/saaaa/nologin
sync:x:5:0:sync:/saaaa:/bin/sync
shutdown:x:6:0:shutdown:/saaaa:/sbin/shutdown
halt:x:7:0:halt:/saaaa:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/saaaa/nologin
operator:x:11:0:operator:/root:/saaaa/nologin

8.sed对原文件操作

①删除原文件第1行

原文件

 cat passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@control data]# 

删除操作后

[root@control data]# sed -i '1 d' passwd
[root@control data]# cat passwd |head
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

②修改原文件之前备份

[root@control data]# sed -i.bak '1 d' passwd

Linux的sed命令详解大全相关推荐

  1. <Linux>《Linux 之 ps 命令详解大全(含实用命令)》

    <Linux 之 ps 命令详解大全(含实用命令)> 1 常用命令 1.1 显示所有当前进程 1.2 显示所有当前进程 1.3 显示所有当前进程 1.4 根据用户过滤进程 1.5 根据 C ...

  2. linux 之sed命令详解

    sed命令详解 sed是什么 sed是linux文本处理三剑客之一,全称 StreamEDitor,非常著名的行编辑器,功能十分强大. sed的工作过程 sed处理文本时每次从文件复制出来一行,放在工 ...

  3. 【转】【Linux】sed命令详解

    sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space ...

  4. Linux系统sed命令详解

    目录 一.简介 二.选项 三.文本编辑 四.具体实例 4.1 追加 4.2 删除 4.3 替换 4.4 打印 4.5 从文件中读内容 4.6 sed带变量执行 一.简介 sed命令可依照脚本的指令来处 ...

  5. Linux神兵利器—sed命令详解

    文章目录 一.概述 二.sed基本指令 `2.1.sed语法格式` `2.2.命令选项` `2.3.基本操作指令` `2.4.sed支持的数据定位方法` `2.5.示例` p指令 直接使用行号匹配 使 ...

  6. linux之sed命令详解

    调用sed命令有两种形式: **sed [options] 'command' file(s) sed [options] -f scriptfile file(s)** a\ 在当前行后面加入一行文 ...

  7. Linux的Sed命令详解

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处 ...

  8. linux sed 详解,linux的sed命令详解

    一丶简介 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(patternspace),接着用sed命令处理缓冲区中的内容,处理 ...

  9. linux资源查看命令详解大全[top|vmstat|free]

    TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况. TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止 ...

最新文章

  1. 一文读懂生成对抗网络GANs(附学习资源)
  2. WordPress添加固定位置的百度分享按钮
  3. python numba.jit 警告:cannot determine Numba type of class 'numba.dispatcher.LiftedLoop'(加速代码)
  4. java获取随机正整数
  5. JZOJ 5776. 【NOIP2008模拟】小x游世界树
  6. ifttt.com:让你的网络行为能引发连锁反应
  7. ubuntu安装vsftpd遇到的问题
  8. oracle 用户表、字段信息
  9. c++构造函数分类说明
  10. 基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)
  11. 厉害了!20年【科比NBA】生涯|数据分析
  12. linux USB摄像头 V4L2工具调试摄像头
  13. 传统图像降噪算法之BM3D原理详解
  14. Tita 绩效宝:掌握绩效考核对话
  15. 深入理解Nginx 读书笔记
  16. sudo rm-rf引发的惨案——Linux硬盘的分区和挂载
  17. 为什么输入法显示中文打不出中文_搜狗中文输入无法显示汉字怎么办_win10搜狗输入法打不出汉字的解决方法...
  18. 阿里云客服机器人人工服务配置文档
  19. Linux解压压缩包到同名目录,里面的文件会自动覆盖吗?
  20. 免费java视频教程大全在线观看

热门文章

  1. 聚力优创:拼多多可以拒绝退款吗?
  2. Power BI 替代VLookUP 拼接海量数据
  3. Share 远离驼背你可以更帅、更美
  4. 经典“磨皮”技法:美化人物面容
  5. TWS耳机市场规模继续扩大,或将成继智能手机后下一个10亿级产品
  6. JS全屏代码,解决PDF.js在iframe中部分浏览器全屏功能错误
  7. 解决彻底删除网址前的ico小图标
  8. Caffeine入门使用
  9. MYSQL:利用子查询进行过滤
  10. 事务四大特性及实现原理