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 text2  192.168.0.13  162.12.0.1234  this is the last line

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

[root@localhost ~]# nl file.txt | sed "1i add text"
add text1  wtmp begins Mon Feb 24 14:26:08 20142  192.168.0.13  162.12.0.1234  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 20144  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.13  162.12.0.1234  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 20142  192.168.0.13  172.12.0.1234  this is the last line

这里大括号{}里能够运行多个命令,用;隔开就可以,q是退出
(8)连续编辑 -e
删除第二行,而且匹配把last替换成new

<pre name="code" class="plain">[root@localhost ~]# nl file.txt | sed -e "2d" -e "s/last/new/"1  wtmp begins Mon Feb 24 14:26:08 20143  162.12.0.1234  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" " " < file.txt
wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line last linen

转载于:https://www.cnblogs.com/yutingliuyl/p/6784447.html

Linux Sed命令具体解释+怎样替换换行符quot;\nquot;(非常多面试问道)相关推荐

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

    Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读 ...

  2. 【Shell】 sed/tr替换换行符

    $ cat test.txt 5 2 1 sed命令 cat test.txt | sed ':label;N;s/\n/ /;b label' tr命令 ★ ★ ★ cat test.txt | t ...

  3. linux中sed如何替换换行符,linux sed命令,如何替换换行符“\n”

    linux sed命令,如何替换换行符"\n" 在一次sed使用中,执行命令: sed "s/\n//g" file 1 发现,没起到任何效果. 后来,经查se ...

  4. linux sed命令,如何替换换行符“\n”

    linux sed命令如何替换换行符n     实现方法         第一种方法使用test跳转命令实现替换换行符         branch和test区别         第二种方法使用bra ...

  5. linux sed替换大小写,sed命令介绍 及实例(替换换行符及大小写替换)

    一.sed命令介绍 Table of Contents 1. Sed简介 2. 定址 3. Sed命令 4. 选项 5. 元字符集 6. 实例 7. 脚本 1. Sed简介 sed是一种在线编辑器,它 ...

  6. Linux下Sed命令的用法(之替换)

    Linux 操作系统最大的一个好处是它带有各种各样的实用工具.存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具.可以简化关键情况下操作的一个实用 工具是 sed.它是任何管理员的工具包中最 ...

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

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

  8. Linux sed命令高级用法精讲

    <Linux sed用法详解>一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求.本节将介绍 sed 提供的一些高级功能,这些功 ...

  9. Linux sed命令完全攻略(超级详细)

    我们知道,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入.删除或替换数据中的文本.但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需 ...

最新文章

  1. python从控制台读取数据
  2. java基础知识之循环结构与数组
  3. python爬取数据案例分析_基于Python及webdriver的网页抓取案例
  4. android studio设置生成的release版本apk的名称
  5. Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(一)...
  6. 【转】SQL Server中行列转换 Pivot UnPivot
  7. SQLServer数据库,表内存,实例名分析SQL语句
  8. 作为程序员,北漂的我有很多话想说。
  9. Flink : The object probably contains or references non-serializable fields.
  10. GUN/LINUX的文件类型
  11. Mysql表设计需要注意的问题
  12. yagmail发送附件
  13. STEAM 正在检查可用更新 ,失败
  14. CodeIgniter session过期时间问题
  15. error: Apostrophe not preceded by \ (in XXX.)
  16. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
  17. [NameError]: name ‘F’ is not defined
  18. Oracle取小数点部分
  19. Jenkins连接AWS-EKS
  20. ChatGPT 推出 iOS 应用,支持语音输入,使用体验如何?

热门文章

  1. 一张心酸得不想起名字的照片,人艰就别拆了好吗 | 每日趣闻
  2. 程序员饭碗不保了?GPT-3 最强应用发布,动动手指就自动写代码的神器来了!...
  3. 中兴同美司法部和解协议获准:罚12亿美元
  4. 【鲁班学院】一个三年工作经验和月薪16k的java程序员应该要具备什么样的技能?...
  5. 浅谈k8s cni 插件
  6. Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例
  7. 平时一些mysql小技巧及常识
  8. eclipse插件之easyshell
  9. javascript客户端检测技术
  10. 页面切换语言包使用session不用cookie