sed命令行格式为:
         sed [-nefri]  ‘command’  输入文本/文件        
常用选项:
        -n∶取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来
        -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑
        -f∶指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作
        -r∶sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
        -i∶直接修改读取的文件内容,而不是由屏幕输出       
常用命令:
        a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
        c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
        d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容
        i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
        p∶ 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用
        s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g

定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
地址是一个数字,则表示行号;是“$"符号,则表示最后一行。例如:  
sed  -n  '3p' datafile
只打印第三行

指定一个区间行的信息
sed -n '2,4p' datafile

地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。例如:
 
 
sed '2,5d' datafile
#删除第二到第五行
sed '/My/,/You/d' datafile
#删除包含"My"的行到包含"You"的行之间的行
sed '/My/,10d' datafile
#删除包含"My"的行到第十行的内容

删除某行
   [root@localhost ruby] # sed '1d' a.txt                 #删除第一行
   [root@localhost ruby] # sed '$d' a.txt                #删除最后一行
   [root@localhost ruby] # sed '1,2d' a.txt             #删除第一行到第二行
   [root@localhost ruby] # sed '2,$d' a.txt             #删除第二行到最后一行
显示某行
   [python@master2 tmp]$ sed -n '1p' a.txt           #显示第一行
   [python@master2 tmp]$ sed -n '$p' a.txt           #显示最后一行
   [python@master2 tmp]$ sed -n '1,2p' a.txt        #显示第一行到第二行
   [python@master2 tmp]$ sed -n '2,$p' a.txt        #显示第二行到最后一行
使用模式进行查询
   [python@master2 tmp]$ sed -n '/2/p'  a.txt        #查询包括关键字ruby所在所有行
   [python@master2 tmp]$ sed -n '/\$/p' a.txt        #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义

增加一行或多行字符串
[python@master2 tmp]$ sed '1a drink tea' a.txt      #第一行后增加字符串
1
drink tea
2
3 the $
4
5
6
7
8 the
9

[python@master2 tmp]$ sed '1,3a drink tea' a.txt   #在第一行和第三行之间的行每一行之间都添加
1
drink tea
2
drink tea
3 the $
drink tea
4
5
6
7
8 the
9
[python@master2 tmp]$ sed '1a drink tea\nor coffen' a.txt  #添加多行用\n来链接
1
drink tea
or coffen
2
3 the $
4
5
6
7
8 the
9

代替一行或者多行
[python@master2 tmp]$ sed '1c Hi' a.txt  #第一行用Hi代替
Hi
2
3 the $
4
5
6
7
8 the
9
[python@master2 tmp]$ sed '1,2c Hi' a.txt  #第一行和第二行用Hi代替
Hi
3 the $
4
5
6
7
8 the
9

替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)
[python@master2 tmp]$ sed -n '/the/p' a.txt |sed 's/the/bird/g'   #代替
3 bird $
8 bird
[python@master2 tmp]$ sed -n '/the/p' a.txt |sed 's/the//g'        #删除
3  $
8

插入
[python@master2 tmp]$ sed -i '$abye' a.txt  #在最后一行添加bye

替换:
-e是编辑命令,用于sed执行多个编辑任务的情况下。在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上。
[python@master2 tmp]$ sed -e '1,3d' -e 's/the/your/g'  a.txt     #删除1到3行,然后the用your 代替
4
5
6
7
8 your
9
bye

# 替换两个或多个空格为一个空格
sed 's/[ ][ ]*/ /g' file_name

# 替换两个或多个空格为分隔符:
sed 's/[ ][ ]*/:/g' file_name

# 替换成空格
sed 's/[[:space:]][[:space:]]*/ /g' filename

# 替换成分隔符:
sed 's/[[:space:]][[:space:]]*/:/g' filename

基本sed编程举例:
    使用p(rint)显示行: sed -n '2p' temp.txt             只显示第2行,使用选项n
    打印范围:  sed -n '1,3p' temp.txt                   打印第1行到第3行
    打印模式:  sed -n '/movie/'p temp.txt               打印含movie的行
    使用模式和行号查询:  sed -n '3,/movie/'p temp.txt   只在第3行查找movie并打印
    显示整个文件:  sed -n '1,$'p temp.txt               $为最后一行
    任意字符:  sed -n '/.*ing/'p temp.txt               注意是.*ing,而不是*ing
    打印行号:  sed -e '/music/=' temp.txt
    删除文本: sed '1d' temp.txt  或者 sed '1,4d' temp.txt
    替换文本: sed 's/source/OKSTR/' temp.txt            将source替换成OKSTR
             sed 's//$//g' temp.txt                     将文本中所有的$符号全部删除
             sed 's/source/OKSTR/w temp2.txt' temp.txt  将替换后的记录写入文件temp2.txt
    替换修改字符串: sed 's/source/"ADD BEFORE" &/p' temp.txt
             结果将在source字符串前面加上"ADD BEFORE",这里的&表示找到的source字符并保存
    sed结果写入到文件: sed '1,2 w temp2.txt' temp.txt
                       sed '/name/ w temp2.txt' temp.txt
    从文件中读文本: sed '/name/r temp2.txt' temp.txt
    在每列最后加文本: sed 's/[0-9]*/& Pass/g' temp.txt
    从shell向sed传值: echo $NAME | sed "s/go/$REP/g"   注意需要使用双引号
快速一行命令:
    's//.$//g'         删除以句点结尾行
    '-e /abcd/d'       删除包含abcd的行
    's/[][][]*/[]/g'   删除一个以上空格,用一个空格代替
    's/^[][]*//g'      删除行首空格
    's//.[][]*/[]/g'   删除句号后跟两个或更多的空格,用一个空格代替
    '/^$/d'            删除空行
    's/^.//g'          删除第一个字符,区别  's//.//g'删除所有的句点
    's/COL/(.../)//g'  删除紧跟COL的后三个字母
    's/^////g'         删除路径中第一个/

替换单引号为空:
可以这样写:
sed 's/'"'"'//g'

sed 's/'\''//g'

sed s/\'//g

在文件的第一行前面插入一行abc
[python@master2 tmp]$ sed -i '1i\abc' a.txt

shell中sed的简单使用的更多相关文章

  1. shell中sed用法

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  2. Shell中sed使用

    sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往 ...

  3. python3-file的修改实现类似shell中sed的功能

    # Auther: Aaron Fan '''思路:目的是为了修改yesterday这个文件,但是因为无法直接去修改这个文件,所以需要先把修改好的内容写入高yesterday.new这个文件中,然后再 ...

  4. shell中sed命令

    sed -i '/cd ${LDIR_DEST}\/webextend\/pc && ln -s \/hard\/www_winclient\/bboxpc.exe ./a\ \tcd ...

  5. shell中的=~的简单用法

    其中 ~ 其实是对后面的正则表达式表示匹配的意思,如果匹配就输出1, 不匹配就输出0 [[ $test =~ ^[0-9]+ ]] && echo 1 || echo 0

  6. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  7. shell中,我们可以通过简单的一个判断来判断命令是否存在

    shell中,我们可以通过简单的一个判断来判断命令是否存在 which "Command" > /dev/null if [ $? -eq 0 ] then echo com ...

  8. 在shell中使用sed命令替换/为\/

    sed命令相关: https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html https://www.cnblogs.com/D ...

  9. linux下shell脚本中sed命令的用法

    先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...

随机推荐

  1. xshell链接vbox 上 nat 方式链接虚拟机 - 端口转发

    使用场景 某些不可解原因导致 centos7通过桥接方式进行外网资源访问无法实现, 但是 nat 方式是没问题的, 因此考虑直接基于这个的方式进行操作, 但是xshell 的链接需要ip地址, 因此提 ...

  2. 利用Smarty实现文本隔行变色

    行变色 php页面 <?phpinclude "libs/Smarty.class.php";$smarty = new Smarty(); $link = mysql_co ...

  3. Laplacian eigenmap 拉普拉斯特征映射

    下面是实验室大牛师兄自己写的一段总结,主要内容是Laplacian Eigenmap中的核心推导过程. 有空还是多点向这位师兄请教,每次都会捡到不少金子. Reference : <Laplac ...

  4. HBase管理与监控——内存调优

    HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...

  5. three.js效果之热力图和轨迹线

    1.热力图 开始的时候,是用一个网上找的canvas画渐变热点的demo,原理就是给定顶点坐标,然后画圆,颜色使用渐变色,根据权重决定渐变的层数(红色->橙色->绿色) . 但是终究觉得这 ...

  6. python 读取文件夹中所有同类型的文件 并用pandas合并

    import globimport osimport pandas as pd read_path = 'D:/Data' # 要读取的文件夹的地址read_excel = glob.glob(os. ...

  7. bert系列二:《BERT》论文解读

    论文<BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding> 以下陆续介绍ber ...

  8. mysql数据库设置密码

    1.用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); ...

  9. 【Abode Air程序开发】移动设备、桌面和浏览器应用程序开发的差异

    移动设备.桌面和浏览器应用程序开发的差异 在移动设备应用程序中使用 Spark 和 MX 组件的限制 移动设备应用程序在性能方面的注意事项 浏览器  将应用程序部署为 SWF 文件,以用于在浏览器中运 ...

  10. 【DSP开发】DSP程序优化

    此文是在http://blog.csdn.net/guanchanghui/article/details/1181851基础上,通过自己的学习理解修改而来.暂且算作是自己的原创吧.如有侵权,联系,立 ...