Sed

Sed是一个强大的文本处理工具

可以采用正则匹配,对文本进行插入删除修改等操作

Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读入缓冲区,如此重复,直到结尾。

1、命令格式和参数

sed [-nefr] [动作] 文件

参数:

-n 安静模式,在sed处理的时候,所有来自STDIN的数据都会被输出到终端,加上-n会只输出处理的哪行

-e 直接在命令列上进行sed动作编辑

-f 直接将sed的动作写在文件内

-r sed动作支持延伸的正则表达(默认只是基础正则)

-i 直接修改文件内容(慎用,尤其是用系统文件做练习的时候)

动作:

a

append:增加,在当前行的下一行增加

c

:取代,取代n1到n2之间的行

d

delete:删除

i

插入,目前行的上一行插入

p

打印,常常与-n使用

s

取代,s/old/new/g

2、基础用法详解

(1)第一行之后添加一行

[root@localhost ~]# nl file.txt | sed "1a add text"

1  wtmp begins Mon Feb 24 14:26:08 2014

add text

2  192.168.0.1

3  162.12.0.123

4  this is the last line

(2)第一行之前添加一行

[root@localhost ~]# nl file.txt | sed "1i add text"

add text

1  wtmp begins Mon Feb 24 14:26:08 2014

2  192.168.0.1

3  162.12.0.123

4  this is the last line

(3)删除第2,3行

[root@localhost ~]# nl file.txt | sed "2,3d"

1  wtmp begins Mon Feb 24 14:26:08 2014

4  this is the last line

(4)打印第2,3行

[root@localhost ~]# sed -n "2,3p" file.txt

192.168.0.1

162.12.0.123

这里要提到的是,尽量使用-n,不然会出现这样的结果

[root@localhost ~]# sed "2,3p" file.txt

wtmp begins Mon Feb 24 14:26:08 2014

192.168.0.1

192.168.0.1

162.12.0.123

162.12.0.123

this is the last line

(5)把168换成169

先看源文件

[root@localhost ~]# cat file.txt

wtmp begins Mon Feb 24 14:26:08 2014

192.168.0.1

162.12.0.123

this is the last line

处理后

[root@localhost ~]# sed "s/168/169/g" file.txt

wtmp begins Mon Feb 24 14:26:08 2014

192.169.0.1

162.12.0.123

this is the last line

(6)插入多行

[root@localhost ~]# nl file.txt | sed "2afirst\nsecond" file.txt

wtmp begins Mon Feb 24 14:26:08 2014

192.168.0.1

first

second

162.12.0.123

this is the last line

(7)匹配数据,然后进行操作

只需要在上述的基础上加上正则匹配

sed "/匹配的模式/处理的方式" file.txt

sed "/^root/d" file.txt 对开始有root的删除

例如

匹配begin,并删除改行

[root@localhost ~]# nl file.txt | sed "/begin/d"

2  192.168.0.1

3  162.12.0.123

4  this is the last line

匹配123,并且把含有123的行162都替换成172

[root@localhost ~]# nl file.txt | sed "/123/{s/162/172/g;q}"

1  wtmp begins Mon Feb 24 14:26:08 2014

2  192.168.0.1

3  172.12.0.123

4  this is the last line

这里大括号{}里可以执行多个命令,用;隔开即可,q是退出

(8)连续编辑 -e

删除第二行,并且匹配把last替换成new

[root@localhost ~]# nl file.txt | sed -e "2d" -e "s/last/new/"

1  wtmp begins Mon Feb 24 14:26:08 2014

3  162.12.0.123

4  this is the new line

(9)直接修改文件,切记不要修改系统文件

[root@localhost ~]# sed -i "/begin/{s/24/25/g}" file.txt

[root@localhost ~]# cat file.txt

wtmp begins Mon Feb 25 14:26:08 2014

192.168.0.1

162.12.0.123

this is the last line

三 、一个比较有趣的例子

如何替换\n也就是把所有的行都归为一行

第一种方式

[root@localhost ~]# sed ':a;N;$!ba;s/\n/ /g' file.txt

wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line

第二种方式

[root@localhost ~]# tr "\n" " "

wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line last linen

linux替换换行符 n r,Linux Sed命令详解+如何替换换行符\n(很多面试问道)相关推荐

  1. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  2. Linux的sed命令详解大全

    Linux的sed命令详解大全 一.sed命令介绍 二.sed 的运行模式 三.sed的相关选项 四.sed基本用法 1.sed语法 2.sed的查看功能 ①查看passwd文件的第5到第8行内容 ② ...

  3. linux sed 命令,Linux sed 命令详解

    Linux sed 命令详解 Linux sed 命令是利用脚本处理文本文件. sed 可按照脚本的指令来处理.编辑文本文件. sed 主要用于自动编辑一个或多个文件.简化对文件的反复操作.编写转换程 ...

  4. linux 之sed命令详解

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

  5. 【Linux篇】sed命令详解

    文章目录 sed命令详解 一.基本语法 二.实操案例 内部命令选项说明 命令选项说明 标志 三.sed小技巧 sed命令详解 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 ...

  6. linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网

    Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...

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

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

  8. LInux sed命令详解

    文章转自:http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/#comments sed命令详解 sed是st ...

  9. linux中的 ip addr 和 ip link命令详解

    linux中的 ip addr 和 ip link命令详解 一.ip addr命令 我是使用的linux系统是redhat7.3,其它linux的相关操作大同小异(在这里不做赘述) 1.查看 (1). ...

最新文章

  1. 1027. 戴绿帽子的空管
  2. 同步方法 sleep和wait 线程同步的方法
  3. 3.git版本控制-管理修改、撤销、删除
  4. 操作系统:第二章 进程管理2 - 处理机调度
  5. ios 制作framework
  6. Microsoft.AlphaImageLoader滤镜解说
  7. android 瀑布流StaggeredGridLayoutManager重新排序后,顶部留白处理
  8. linux下安装字体
  9. 【深度解读】电动自行车新国标对锂电池行业的影响分析
  10. 找到组织了---perftest工作室 TIB工作室
  11. 乔布斯逝去十年 苹果坠入凡间?
  12. 【计算机网络】中国大学MOOC哈工大国家精品课局域网部分习题
  13. Saruman‘s Army
  14. 手机被偷完整找回方案
  15. 这对CP我磕了!Adobe XD与Flutter插件官宣了……
  16. 流量控制组件, 技术选型:Sentinel vs Hystrix
  17. 座右铭-激励自己的话
  18. 李嘉诚给年青人提出了53条人生忠告
  19. 推荐一款神仙颜值的 Redis 客户端工具,开源啦
  20. 中专计算机学数学吗,数学很差能学计算机吗-江西中专

热门文章

  1. 大数据开发要学java还是python?
  2. 适合普通人的冷门小项目:公众号文章批量采集下载导出整理
  3. APP打包的几种方法
  4. 难如“取经”的基础软件创业,都有哪些过不完的坎?
  5. mysql之DML语句
  6. 基于android的快递管理系统app
  7. 从煎鸡蛋的角度理解编程的思维和流程,你适合学吗?
  8. 数据结构与算法--线性表的查找
  9. 输入验证码投票功能的实现
  10. 冷热水龙头_冷热水龙头怎么拆卸?冷热水龙头使用注意事项?