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. Android线程间异步通信机制源码分析

    本文首先从整体架构分析了Android整个线程间消息传递机制,然后从源码角度介绍了各个组件的作用和完成的任务.文中并未对基础概念进行介绍,关于threadLacal和垃圾回收等等机制请自行研究. 基础 ...

  2. Android + Eclipse + NDK + cygwin配制

    以前做NDK开发时留下来的笔记,希望对后继开发人员有所帮助,在开放给大家使用,有不对的地方请留,扔砖头都可以的. 为了方便在Win32下开发android C++ 程序,我们作了如下配制:1.Andr ...

  3. css3实现3D切割轮播图案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. AngularJs轻松入门

    AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs ...

  5. GoogleMap 获取自己的数字证书API key的步骤

    http://dreamylights.blog.51cto.com/1163218/1360759 1. 进入到Google APIs Console页面 https://code.google.c ...

  6. 移动端H5 判断IOS还是Android 平台

    1.方法 (function($) { var UA = window.navigator.userAgent; if(/Android|HTC/i.test(UA) || !!(window.nav ...

  7. outlook 2010 搜索不到邮件

    打开outlook 2010 文件, 选项, 加载项, 转到 windows search eamil indexer(打勾) 关闭outlook 控制面板, 索引选项, 高级, 重建索引

  8. Verilog之$sreadmemb

    1 Memories  Memories file format is shown below, the address is specified as @ <address> in he ...

  9. gitignore相关

    用git也有一段时间了,前些天在公司fork一个新的项目着手做,结果这个项目的creator早先把eclipse的配置文件也提交了上去,后续其他参与者提交代码时,这几个文件总是要注意不选中. 虽然不影 ...

  10. otool -l 可执行文件结构

    otool -l /Users/zzf073/Desktop/FqlMerchantX /Users/zzf073/Desktop/FqlMerchantX: Mach header magic cp ...