sed是一个很好的文件处理工具,本身是一个管道命令,主要以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。
1. sed命令行格式
sed [选项] [命令]

1.1 选项
-n,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过

sed特殊处理的那一行(或者动作)才会被列出来。

-e,直接在命令列模式上进行sed的动作编辑。

-f,直接将sed的动作写在一个文件内。-f filename 则可以运行filename内的sed命令。

-r,sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

-i,直接修改读取的文件内容,而不是输出到终端。

1.2 指定行数
[n1[,n2]]function

n1, n2,不一定存在,一般代表“选择进行动作的行数”,如果我的动作需要在10到20行之间进行,则有’10,20命令’

1.3 常用命令
a,新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)

c,取代,c的后面可以接字符串,这些字符串可以取代n1,n2 之间的行

d,删除,因为是删除,所以d后面通常不接任何东西

i,插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

p,输出,即将某个选择的文件输出。通常p会与参数sed -n 一起使用

s,取代,直接对某些字符串进行替换

2. 实例
假设我们有一文件名为ab.txt,内容如下
this is a newfile!
hello world
please
asd12
123asdasd

删除某行
对ab.txt的行进行操作,将操作结果输出到终端(只是做模拟操作,不改动源文件)

sed '1d' ab.txt # 输出删除第一行后的文件内容

sed '$d' ab.txt # 输出删除最后一行后的文件内容

sed '1, 2d' ab.txt # 输出删除第一行到第二行后的文件内容

sed '2, $d' ab.txt # 输出删除第2行到最后1行后的文件内容

显示某行
sed -n '1p' ab.txt # 只显示文件的第一行

sed -n '$p' ab.txt # 只显示文件的最后一行

sed -n '1, 2p' ab.txt # 只显示文件的第一行到第二行

sed -n '2, $p' ab.txt # 显示文件的第二行到最后一行

使用安静模式进行查询
# 输出关键字ruby所在行的内容;其中'/str/p',str为搜索的文本内容
sed -n '/ruby/p' ab.txt

# 输出关键字$所在行的内容,使用反斜线\屏蔽特殊含义
sed -n '/\$/p' ab.txt

增加一行或多行字符串
# 在第一行后增加字符串"drink tea"
sed '1a drink tea' ab.txt

# 在第一行到第三行后增加字符串"drink tea"
sed '1,3a drink tea' ab.txt
sed '1a drink tea\nor coffee' ab.txt # 在第一行后增加两行,换行使用\n,可多次使用\n添加多行

替代一行或多行
sed '1c Hi' ab.txt # 把ab.txt的第一行替换为Hi
sed '1,2c Hi' ab.txt # 把ab.txt的第一行到第二行替换为Hi

替换一行中的某部分字符串
格式:sed 's/要替换的字符串/新的字符串/g' ab.txt(要替换的字符串可以用正则表达式)
sed 's/ruby/bird/g' ab.txt # 把全部的ruby替换为bird
sed 's/ruby//g' ab.txt # 把全部的ruby替换为空,即删除ruby字符串

3. sed -i 命令详解
sed -i直接对文件进行操作

# 对每行匹配到的第一个字符串进行替换
sed -i 's/原字符串/新字符串/' ab.txt

# 对全局匹配上的所有字符串进行替换
sed -i 's/原字符串/新字符串/g' ab.txt

# 删除所有匹配到字符串的行
sed -i '/匹配字符串/d' ab.txt

# 特定字符串的行后插入新行
sed -i '/特定字符串/a 新行字符串' ab.txt

# 特定字符串的行前插入新行
sed -i '/特定字符串/i 新行字符串' ab.txt

# 把匹配行中的某个字符串替换为目标字符串
sed -i '/匹配字符串/s/源字符串/目标字符串/g' ab.txt

# 在文件ab.txt中的末行之后,添加bye
sed -i '$a bye' ab.txt

# 对于文件第3行,把匹配上的所有字符串进行替换
sed -i '3s/原字符串/新字符串/g' ab.txt

注:若匹配字符串是变量,则需要"",而不是’’

使用sed -i对文本字符串进行增删改查的更多相关文章

  1. JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删改查),事件

    JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删 ...

  2. DAY4(python)打印字符串以及增删改查

    用while循环打印字符串 #if i in s: # print ( i ) s='nanfjkhndaol' index = 0 while 1 : print (s[index]) index+ ...

  3. C++学习38 string字符串的增删改查

    C++ 提供的 string 类包含了若干实用的成员函数,大大方便了字符串的增加.删除.更改.查询等操作. 插入字符串 insert() 函数可以在 string 字符串中指定的位置插入另一个字符串, ...

  4. 使用控制台对Redis执行增删改查命令

    使用控制台对Redis执行增删改查命令 在上一篇里,我们已经安装了redis.这一篇我们将一起来学习如何使用"控制台"管理Redis 首先肯定是打开一个控制台,在windows系统 ...

  5. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  6. linux的sed(增删改查)使用方法

    sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...

  7. linux sed 命令 实现对文件的增删改替换查 实验

    1. 统一实验文本 # 创建包含下面内容的文件,后面的操作都会使用这个文件 [root@MongoDB ~]# cat person.txt ,mike,CEO ,jack,CTO ,yy,CFO , ...

  8. 使用 Json.Net 对Json文本进行 增删改查

    JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...

  9. SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学、字符串、日期时间)函数[转]

    SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学.字符串.日期时间)函数   --创建表格 create table aa ( UserName varchar(50 ...

随机推荐

  1. for循环和数组的应用

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  2. IDEA导入个性化主题的方法

    IDEA的主题可以自定义,也可从网上下载 http://www.riaway.com/theme.php 喜欢的主题,保存到本地. 主题是一个jar的包.导入到idea的方法如下: file –> ...

  3. TortoiseSvn问题研究(一)

    问题描述 今天在工作中遇到一个SVN方面的问题,牵扯出使用SVN这一段时间的一系列问题. 具体来说,是这样的: 上周五有上线分支,自己的分支需要merge: 很多项目小组都在开发这个项目,再往前好像也 ...

  4. 04-手把手教你把Vim改装成一个IDE编程环境(图文)

    Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重 ...

  5. 优动漫PAINT(clip studio paint)怎么画一幅水墨竹子图

    今天小编分享使用优动漫PAINT绘制一个水墨竹子教程,绘画的过程中我只用到了两个笔刷,即钢笔模式下的“美术字”和“效果线专用”,并且全程鼠标绘制哦,所以生疏的笔触效果大家见谅,没有数位板的小伙伴不妨试 ...

  6. 远程连接windows出现身份验证错误,提示"由于CredSSP加密Oracle修正"解决方案

    本机操作系统(OS版本:10.0.17134) 远程计算机操作系统(OS版本:6.3.9600) 远程连接的时候报错“出现身份验证错误,要求的函数不受支持.远程计算机:xxx 这可能是由于CredSS ...

  7. python tips:生成器的小问题

    在Python中,生成器和函数很像,都是在运行的过程中才会去确定各种变量的值,所以在很多情况下,会导致各种各样的问题. def generator_test1(): # 0...9 generator ...

  8. centos7 redmine安装过程(转载)

    redmine 部署过程 redmin官方文档写的太烂加上不熟悉ruby搞了半天,回到家后觉得还是记录下好,希望可以帮助有需要的人,少走弯路. 版本说明 下面的版本很重要redmine 版本 3.3 ...

  9. 路飞学城Python-Day117

    jango用户登录界面 """ Django settings for cnblog project. Generated by 'django-admin startp ...

  10. Unsupported platform for fsevents@1.2.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

    系统:win10 使用 npm 安装依赖时报错: Unsupported platform for fsevents@1.2.3: wanted {"os":"darwi ...