linux下sed i命令作用(转载)_sed -i-程序员宅基地

技术标签: linux  

sed是一种流编编器,stream edit 它是文本处理中非常中的工具,能够完美的配合正则表达式便用,功物能不同凡响。

处理时,把当前处理的行存储在临时缓冲区(内存)中,称为”模式空间”( pattern space),接看用sed命令处理缓冲区中的内容,处理成后,把缓冲区的内容送往屏幕显示。

接着理下一行,这样不断重复,直到文件末。可使用了写入的命令,将内容更新。

定位行地址用于决定对哪些行进行编辑。行定位地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定行定位地址,sed将处理输入文件的所有行。

sed命令功能

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

命令  功能

a\  在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行  a代表append之意

 

c\  用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行  c代表current之意

 

i\  在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行   i代表 insert之意

 

d   删除行  d为delete之意

 

h   把模式空间里的内容复制到暂存缓冲区

 

H   把模式空间里的内容追加到暂存缓冲区

 

g   把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容

 

G   把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面

 

l   列出非打印字符 l代表list之意

 

p   打印行 p代表print之意

 

n   读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理 n为next之意

 

q   结束或退出sed   q为quit之意

 

r   从文件中读取输入行 r代表read之意

 

!   对所选行以外的所有行应用命令 !代表“非” 代表反选之意

 

s   用一个字符串替换另一个

 

g   在行内进行全局替换   g 代表global之意:全局

 

w   将所选的行写入文件 w代表write之意

 

x   交换暂存缓冲区与模式空间的内容  x代表exchange交换之意

 

y   将字符替换为另一字符(不能对正则表达式使用y命令)

sed常见命令参数

1

2

3

4

5

6

7

p==print

d:delete

=:打印匹配行的行号

-n 取消默认的完整输出,只要需要的 

-e 允许多项编辑

-i 修改文件内容

-r 不需要转义

1

注意:& 符号在sed命令中代表上次匹配的结果

常用的命令展示

sed擅长行输出,附源文件:

1

2

3

4

5

6

7

8

9

10

11

12

hhh     pts/1        192.168.25.1     Sat Jun 30 22:04   still logged in  

reboot   system boot  2.6.32-358.el6.i Sat Jun 30 22:04 - 22:43  (00:38)   

omc     pts/0        192.168.25.1     Sat Jun 30 20:16 - down   (00:00)   

reboot   system boot  2.6.32-358.el6.i Sat Jun 30 19:38 - 20:16  (00:37)   

root     pts/1        192.168.25.1     Sat Jun 30 12:20 - down   (00:55)   

root     pts/0        192.168.25.1     Sat Jun 30 11:53 - down   (01:22)   

reboot   system boot  2.6.32-358.el6.i Sat Jun 30 11:52 - 13:15  (01:23)   

root     pts/0        192.168.25.1     Sat Jun 30 05:40 - down   (02:51)   

reboot   system boot  2.6.32-358.el6.i Sat Jun 30 05:38 - 08:32  (02:54)   

root     pts/0        192.168.25.1     Fri Jun 29 21:01 - down   (06:21)   

 

wtmp begins Tue Jun  9 03:57:56 2015

只打印第三行

1

sed -n '3p' /var/log/yum.log

image

只查看文件的第3行到第9行

1

sed -n '3,9p' /var/log/yum.log

image

过滤特定字符串,显示正行内容  

1

sed -n  '/root/p' yum.log

image

显示包含"hhh"的行到包含"omc"的行之间的行

1

sed -n '/hhh/,/omc/p' yum.log

image

打印1-5行,并显示行号

1

sed -n -e '1,5p' -e '='  yum.log

image

仅仅显示匹配字符串的行号

1

 sed -n '/root/p' yum.log

image

打印匹配行的内容和符号【相当于后面又根据关键词查询了一次】

1

sed -n -e '/root/p' -e '/root/=' yum.log

image

用world 替换yum.log文件中的root【真实写入】

1

2

3

4

5

sed -i 's/root/world/g' yum.log

==>sed -i 's#hhh#HHHH#g' h.txt     与上同

              s==search  查找并替换

              g==global  全部替换

              -i: implace

image

打印最后一行

1

sed -n '$p' yum.log

image

在文件第一行添加happy,文件结尾添加new year

1

2

sed -e '1i happy' -e '$a new year' yum.log       【界面显示】

sed -i -e '1i happy' -e '$a new year' yum.log    【真实写入文件】

 

image

在文件第一行和第四行的每行下面添加hahaha

1

sed '1,4i hahaha' yum.log

image

& 符号在sed命令中代表上次匹配的结果

1

sed 's/world/hello_&/g' yum.log

image

 

删除第3到第9行,只是不显示而已

1

sed  '3,9d' /var/log/yum.log

image

删除包含"hhh"的行到包含"omc"的行之间的行

1

sed '/hhh/,/omc/d' yum.log

image

 

删除包含"omc"的行到第十行的内容

1

sed '/omc/,10d' yum.log

image
备注:范围可以用数字、正则表达式、或二者的组合表示

显示中5到10行里匹配root,把行内所有的root替换为FTL,并打印到屏幕上

1

2

sed '5,10 s/root/FTL/g' yum.log【仅显示用】

sed -i sed '5,10 s/root/FTL/g' yum.log【-i 会真正替换信息】

 

image

 

-e是编辑命令,用于多个编辑任务

1

2

删除1到5行后,替换reboot为shutdown

sed -e '1,5d' -e '=' -e 's/reboot/shutdown/g'  yum.log 

image

打印3到6行的内容,并匹配reboot替换为shutdown

1

sed -n -e '3,6p' -e 's/reboot/shutdown/g'  yum.log

image

-r命令是读命令。sed使用该命令将一个文本文件中的内容加到当前文件的特定位置上

1

2

[root@localhost log]# cat test.txt

[root@localhost log]# sed '/root/ r /var/log/test.txt' yum.log  【yum.log  匹配root后读入text.txt的内容在匹配内容之下,仅显示用】

image

-w是写入命令

1

2

3

sed  '/root/ w /home/omc/root.txt' yum.log       【yum.log匹配root后写入root.txt',真实写入】

sed -n '/root/ w /home/omc/root.txt' yum.log    【添加-n参数后,不打印源文件】

ll /home/omc/root.txt

image

打印1-5行,并显示行号

1

sed -n -e '1,5p' -e '='  yum.log

image

sed的正则匹配

正则匹配IP和子网掩码

1

2

3

4

[root@localhost log]#  ifconfig |sed -n '2p'

      [root@localhost log]# ifconfig |sed -n '2p' | sed -r 's#.*r:(.*) B.*k:(.*)#\1 \2#g'

 

      (.*)表示匹配的项,之后可以用\1取出第一个括号内匹配的内容,\2取出第二个括号内匹配的内容 

 

image

配合find命令的使用

1

2

3

4

find . -name  "*.txt" |xargs   sed -i 's/hhhh/\hHHh/g'

find . -name  "*.txt" |xargs   sed -i 's#hhhh#hHHh#g'

find . -name  "*.txt" -exec sed -i 's/hhhh/\hHHh/g' {} \;

find . -name  "*.txt" |xargs cat

sed错误使用

1

2

sed 's#,# #h' h.txt | cut -d" " -f 3,5 h.txt    <-- 错误的用法,前面已经处理了,后面又用cut查看h.txt文件

sed 's#,# #h' h.txt | cut -d" " -f 3,5          --> 正确的用法

作者:小a玖拾柒

出处:http://www.cnblogs.com/ftl1012/

-------------------------------------------

个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~

本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zy103118/article/details/100154181

智能推荐

jdk15安装_jdk15安装教程-程序员宅基地

文章浏览阅读319次。1.首先官网下载jdk包或者百度云找jdk包2.然后运行3.使用命令 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre 生成jre3.配置环境变量如图:1.配置JAVA_HOME2.配置path变量 bin 目录下和 jre/bin 下..._jdk15安装教程

elementUI多选组件的全部与单选选项互斥逻辑_el-select 默认选择【全部】;支持多选(【全部】与其他选项之间互斥)-程序员宅基地

文章浏览阅读1.8k次。使用多选下拉框组件,会出现选择‘全部’与选择某一项互斥的逻辑<template> <div> <div> <el-row :class="[this.isDataMore ? 'el-icon-arrow-down' : 'el-icon-arrow-up']" class="one-row"> <el-col :xs="20" :sm="20" :md="18_el-select 默认选择【全部】;支持多选(【全部】与其他选项之间互斥)

经纬度转换为三维坐标_经纬度转3d-程序员宅基地

文章浏览阅读6.1k次。// 经纬度转换为球坐标double torad(double deg){ return deg/180*acos(-1);}void get_coordinate(double R,double lat,double lng,double &x,double &y,double z){ lat = torad(lat); lng = torad(lng);_经纬度转3d

C#GPA计算_c#求学生的gpa-程序员宅基地

文章浏览阅读437次,点赞2次,收藏5次。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace GPA计算{ class Program { class Student { int num; string name; Course[..._c#求学生的gpa

log4j2使用详解_long4j2 appenderref-程序员宅基地

文章浏览阅读405次。转载自 Blog of 天外的星星: http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html Log4j 2的好处就不和大家说了,如果你搜了2,说明你对他已经有一定的了解,并且想用它,所以这里直接就上手了。   1. 去官方下载log4j 2,导入jar包,基本上你只需要导入下面两个jar包就可以了(xx是乱七八糟的版本号):     log4_long4j2 appenderref

ERROR: pip‘s dependency resolver does not currently take into account all the packages that are inst_error: pip's dependency resolver does not currentl-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏11次。安装包的时候出现报错:ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.distributed 1.21.8 requires msgpack, which is not installed.conda_error: pip's dependency resolver does not currently take into account all th

随便推点

Qt5.11.1 + VS2017环境搭建(Qt5.11在windows上的安装)_llvm_install_dir-程序员宅基地

文章浏览阅读6.4k次。安装视频:《Qt5.11在windows‘上的安装》---------------------------------------------------------------------------------------------------------------------------------------安装VisualStudio2017 VS2017安..._llvm_install_dir

webpack babel-loader一些配置属性_webpack配置babel-loader-程序员宅基地

文章浏览阅读231次。初始化项目npm init安装webpacknpm i webpack webpack-cli --save-d安装babel-loadernpm install [email protected] @babel/core @babel/preset-env webpack// 导入静态资源目录const path = require('path')module.exports = { // 指定开发环境 mode:"development",_webpack配置babel-loader

CSAPP期末复习(更新ing)-程序员宅基地

文章浏览阅读2.2k次,点赞8次,收藏54次。CSAPP期末快速复习(更新ing)本人有关CSAPP的博客链接:私人博客CSDN内容基本上差不多主要内容概论信息的表示机器级的表示链接I/O概论上下文:上下文是一个状态,包含运行进程所需的所有状态信息,进程切换通过切换上下文完成编译过程(链接中会再次提到):源程序 预处理-> 文本 编译->汇编程序 汇编->可重定位目标文件 链接->可执行文件指令集架构:每条机器代码的效果。微体系结构:处理器的具体实现存储器层次结构:从上至下,访问速度越来越慢,_csapp期末

(9月7日学习笔记) 宽高自适应、流式布局、bisiblity元素隐藏 伪对象选择器 代码实现三角形 常见的浏览器兼容问题 浏览器的内核_隐藏元素做三角形-程序员宅基地

文章浏览阅读155次。宽高自适应根据需求提出来的,在实际开发中,大家发现元素最外层宽度或者中间内容区域的高度如果写成固定形式,不方便内容增加或者更改提出了宽高自适应解决方案:宽度:自适应,块级元素,不设置宽度,或者宽度设置100% 或者width:auto;(区别:一个没有设置宽度,一个设置了宽度)高度:块级元素不设置高度,或者height:auto,不能设置为100%,否则会充满屏幕希望元素一开始就有高度,随着内容变化,增加,高度自适应提出最小高度的概念:min-height,满足上述需求其他的高度自适应m_隐藏元素做三角形

hrbust 1739 Sort Problem 模拟_zcmu1739-程序员宅基地

文章浏览阅读347次。Sort ProblemTime Limit: 1000 MSMemory Limit: 65535 KTotal Submit: 343(88 users)Total Accepted: 182(86 users)Rating: Special Judge: YesDescription_zcmu1739

【数据结构】数组与广义表-螺旋矩阵的实现(图解、c++、java)_数据结构螺旋方阵-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏4次。URLeisure的螺旋矩阵的实现“完美”复习资料。_数据结构螺旋方阵

推荐文章

热门文章

相关标签