shell编程 sed详解

1,作用和工作原理:

作用:处理文件内容(增删改查),学了sed之后可以对较大的文件或者大批量的文件进行高效率的处理。

工作原理:sed读取一行,首先将这行放入缓存,然后才对这行进行处理,处理完后,将缓存区的内容发送到终端,其中sed对应的缓存区空间称为:模式空间。

2,格式:

sed [选项] [sed命令] [输入文件]

注意事项:

1,他们之间都有空格,每个元素至少一个空格

2,sed命令是sed软件的内置命令选项(称为sed命令选项是为了和前面的选项区分),它可以是单个也可以是多个sed命令的组合 (后面我们可以学到用-e选项可以实现组合)

3,sed命令两边用‘‘ sed命令前是限制条件。

3,选项说明

选项 解释说明(带*的为重点)
 -n 取消默认的sed软件的输出,常与sed命令的P连用*
-e

一行命令语句可以执行多条sed命令   *

-r ruguler 使用扩展正则表达式,默认情况sed只识别基本正则表达式  *
-i  inside
直接修改文件内容,而不是输出到终端,如果不使用-i选项sed软件只是修改在内存中的数据,并不会影响磁盘上的文件*

所以seq命令,不使用-i的话,默认不会修改文件内容

sed命令 解释说明(带*的为重点)
a  append 追加,在指定行后再追加一行或多行文本*
i    insert 插入,在指定行前再插入一行或多行文本*
c   chenge 取代,取代指定行
d  delete 删除指定的行
p  print 打印模式空间内容,通常p会与选项-n一起使用*
特殊符号 解释说明
! 就像一个sed命令,放在限制条件后面 对指定行以外的所有行应用命令

例子:

a:sed ‘2a cjk‘ nidaye

i:sed ‘3i cjk‘ nidaye

补充:同时增加多行用\n

sed ‘2a nimei\nimei\nimei‘ test

匹配的的行:删除以root开头的行   #sed ‘/^root/d‘ test

指定的行:删除2到5行以外的行sed ‘2,5d‘ test

取反:sed ‘2,5!d‘ test

改(替换)

例子:将5到9行内容替换为 cjk

sed ‘5,9c cjk‘  test

补充文本替换

文本替换

1,选项

这里用到的sed命令,选项:
“s”:单独使用-->将每一行中第一处匹配的字符串进行替换==>sed命令
“g”:每一行进行全部替换-->sed命令s的替换标志之一(全局替换),非sed命令。
“-i”:修改文件内容-->sed软件的选项,注意和sed命令i区别。

2,格式

sed  -i  ‘ s/目标内容/替换内容/g‘  filename

例子:

将/etc/passwd 中的root 改成ken

sed -i ‘s/root/ken/g‘ /etc/passwd

补充

sed -i ‘1s/root/ken/g‘ /etc/passwd

查找指定的字符串

打印指定行,第4行。

sed  -n ‘4p‘  test

例子,显示/etc/passwd中包含root的行(显示(打印)模式空间中的内容)

方法1 sed  -n ‘/root/p ‘ /etc/passwd

补充:-e多点操作

例子:去掉文件中的注释行和空白行

sed -e ‘/^#/d‘ -e ‘/^$/d‘  /etc/passwd

原文地址:https://www.cnblogs.com/lichenghong/p/10418413.html

时间: 2024-08-03 00:07:14

shell编程 sed详解的相关文章

Shell编程三剑客详解

在Linux/UNIX系统中包含很多文本处理器或文本编辑器,其中grep.sed和awk是shell编程中经常用到的文本处理工具,因此,被业内的人广泛的称之为"shell编程三剑客". grep命令工具 grep命令工具,在日常生活中,会经常用到,这里也就不多说了,如果有不明白的朋友,请参考博文:Shell脚本应用之正则表达式详解,里面详细介绍了grep命令的相关参数及使用, sed命令工具 sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑,最

三剑客之 sed详解

    sed 作者:Jack.X 归档:学习笔记 2017/4/13 三剑客之sed 第1章 sed详解: 1.1 sed介绍: sed是linux命令中三剑客的老二,sed命令是操作.过滤和转换文本内容的强大工具,常用功能有增删改查(增加,删除,修改,查询).其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行). 我先在用的sed版本是GNU开源版本的,实验环境是Centos6.8系统,内核是2.6.32-642.el6.x86_64 [[email protecte

PHP Socket 编程过程详解

PHP Socket 编程过程详解 Socket用于进程间通信.进程间通信通常基于客户端—服务端模型.此时,客户端—服务端是可以彼此交互的应用程序.客户端和服务端之间的交互需要连接.Socket编程负责的就是为应用程序之间建立可进行交互的连接. 在本文中,我们将学习如何用PHP创建一个简单的客户端—服务端.我们还将学习如何客户端应用程序如何发送消息到服务端,以及如何从服务端接受消息. 使用代码 目的:开发一个客户端用于发送string消息到服务端,服务端将相同的信息反转后返回给客户端. PHP服

CUDA C 编程指导(二):CUDA编程模型详解

CUDA编程模型详解 本文以vectorAdd为例,通过描述C在CUDA中的使用(vectorAdd这个例子可以在CUDA sample中找到.)来介绍CUDA编程模型的主要概念.CUDA C的进一步描述可以参考<Programming Interface>. 主要内容包括: 1.Kernels(核函数) 2.Thread Hierarchy(线程结构) 3.Memory Hierarchy(存储结构) 4.Heterogeneous Programming(异构编程) 5.Compute C

sed详解与入门

sed,stream editor,流编辑器,输入一段文本,通过处理,得到修改的文本,一个很简单却又很复杂的功能,简单在于只是处理文本,复杂在于需要支持文本处理的全部要求,增删查改等功能. 源文件file,下列操作都是以此文件操作: first second third first sed 增: 增加一行文字:sed '1 a this is a line' file:a代表append: first this is a line second third first sed 插入一行文字:se

Linux Shell系列教程之(八)Shell printf命令详解

本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell printf命令语法 printf format-string [arguments...] format-string为描述格式规格的字符串,用来描述输出的排列方式,最好为此字符串加上引号.此字

《Java网络编程核心技术详解》赶稿中......

<精通JPA与Hibernate:Java对象持久化技术详解>这本书写完,就开始着手写<Java网络编程核心技术详解>一书,已经写了一大半,内容包括:Java网络编程的基础知识. 套接字编程.非阻塞通信.创建HTTP服务器与客户程序.数据报通信.对象的序列化与反序列化.Java反射机制.RMI框架.JDBC API.JavaMail API.MVC设计模式.XML处理.安全网络通信.CORBA和Web服务. 每写一章,都会遇到一些挑战,主要是在调试程序时,没有出现预期的结果.例如分

好消息:《Java网络编程核心技术详解》出版

2019年5月从美国回到上海,由于一切都不安定,先在旅馆里宅了4个多月,写完<精通JPA与Hibernate:Java对象持久化技术详解>,就开始写这本书.现在,正是新冠病毒疫情还没结束之际,本书克服种种困难,如期和读者见面了. 我们一不小心,就会被一种潜在的观念暗示:只要忙过了这一阵,将来就能过上高枕无忧的生活.实际上,生活中总是有各种意外的事情发生,小到个人家庭的琐事,大到国家社会的暂时的不安定.为了能随遇而安,就得常常給自己洗脑,不要以为忙过了这一阵,就会有永远太平安宁的出头之日. 戒骄

三剑客之老二sed详解

    三剑客之老二sed 第1章 sed介绍 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率.而在linux中的"挖土机"有三种型号:顶配awk,中配sed,标配grep.使用这些工具,我们