Linux sed命令用法

内容来自互联网

Linux sed命令用法

linux 下 读取某个文件的某一行或者某几行

查看文件song.txt的第190行到196行, 

sed -n '190,196p' song.txt 

如果查看某一行用 

sed -n '190,1p' song.txt即可 

sed -n 'a,bp' song.txt读取自第a行到第b行的数据 

if(a > b ) return 第a行

 

sed命令详解 

     sed用法 sed是一个非交互性文本流编辑器,它编辑文件或标准输入导出的文件拷贝。可以在命令行输入sed命令, 

也可以在一个文件中写入命令,在使用sed时,sed并不于初始化文件打叫道,它操作的只是一个拷贝,然后所有的改动 

如果没有重定向到一个文件,将输出到屏幕。因为sed是一个非交互性编辑器,必须通过行号或正规表达式指定要改变 

的文本行。 

1、sed怎么读取数据:sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后 

读命令行或脚本的第一命令,并使用这些命令查找模式或定位行号编辑它,重复此过程命令结束。 

2、调用sed:调用sed有三种方式在命令行键入命令;将sed命令插入脚本文件,然后调用sed;将sed命令插入脚本文件, 

并使sed脚本可执行。 

    2.1sed命令格式: 

   sed [选项] sed命令输入文件         【命令行在使用sed时,实际命令要加单引号。sed也允许加双引号】 

   sed [选项] -f sed脚本文件输入文件 

   sed选项如下: 

    n 不打印  【sed不编辑行到标准输出,缺省为打印所有的行】 

    p 命令可以用来打印编辑行 

    c 下一命令是编辑命令,使用多项编辑时加入此选项,如果只用到一条sed命令,此选项无用,但指定它也没有关系 

    f 如果正在sed脚本文件,使用此选项,此选项通知sed一个脚本文件支持所有的sed命令 

     sed -f myscript.sed  input_file    【myscript.sed即为支持sed命令的文件】 

    2.2保存sed输出 

    由于不接触初始化文件,如果想要保存改动内容,简单地将所有输出重定向到一个文件即可,例如: 

    #sed ’some-sed-commands‘ input-file >myoutfile 

    2.3使用sed在文件中查询文本的方式 

    sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本 

     1.使用行号,可以是一个简单数字或一个行号范围 

     2.使用正规表达式 

    使用sed定位文本的一些方式: 

     x (x为行号,如1 

     x,y (表示行号范围从x到y行,如2,5表示从第2行到第5行 

     /pattern/ (查询包含模式的行。如/disk/或/[a-z]/ 

     /pattern/pattern/ (查询包含两个模式的行,例如/disk/disks/ 

     /pattern/ ,x  (在给定行号上查询包含模式的行。例如/ribbon/,3 

     x,/pattern/    (通过行号或模式查询匹配行。例如3,/vcd/ 

     x,y!查询不包含指定行号x和y的行。例如1,2! 

  2.4基本sed编辑命令 

     p 打印匹配行 

     = 显示文件行号 

     a\  在定位行号后附加新文本信息 

     i\ 在定位行号后插入新文本信息 

        d 删除定位行 

     c\ 用新文本替换定位文本 

     s 使用替换模式替换相应模式 

     r 冲另一个文件中读取文件 

     w 写文本到一个文件 

     q 第一个模式匹配完成后推出或立即推出 

     | 显示与八进制ASCII代码等价的控制字符 

     {} 在定位执行的命令组 

     n 从另一个文件中读文本下一行,并附加在下一行 

     g 将模式2粘贴/pattern n/ 

     y 传送字符 

     n 延续到下一输入行;允许跨行的模式匹配语句。 

   sed识别任何基本正规表达式和模式及其匹配规则,如果要定位一特殊字符,必须使用(\)屏蔽其特殊含义 

  例如:1.打印第2行 

    #sed -n ‘2p’ temp.txt 

     2.打印指定范围,打印1到3行,用逗号分割符号 

    #sed -n ‘1,3p’ temp.txt 

     3.使用行号和模式结合使用,显示temp.txt最后一行中的单词the, 

    # sed -n ‘/the/p’ temp.txt 

     4.使用模式与行号的混合方式剔除第一行,和格式为line_number,/pattern/。都好用来分隔行号 

     与模式开始部分,为了达到预期结果,使用4,/the/。意思只在第四行查询模式the。 

    #sed -n ‘4,/the/p’ temp.txt 

     5.匹配元字符$前,必须使用反斜杠\屏蔽特殊含义。模式为/\$/p 

    #sed -n ‘/\$/p’ temp.txt 

     6.显示整个文件,只需将行号范围设为第一行到最后一行1,$。$意为最后一行。 

    #sed -n ‘1,$P’ temp.txt 

     7.显示任意字符,匹配任意字符,后跟任意字符的0次或多次重复,并以ing结尾 

      #sed -n ‘/.*ing/p’ temp.txt 

     8.打印匹配的的字符并显示该行行号 

      #sed -e ‘/music/=’  temp.txt 

     9.在匹配的字符串后插入新的字符串,使用附加操作即使位置,a\,a\通知sed这是一个附加操作 

      #sed  “/abcd/a\ABCD” temp.txt 

     10.替换文本 替换命令用替换模式指定模式,格式为 

    [address[,address]] s/pattern-to-find/replacerment-pattern/[gpwn] 

    s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后replacement-pattern替换它。 

      g: 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。 

      p: 缺省sed将所有被替换写入标准输出,加p选项将使-n选项无效; 

      n: 不打印输出结果; 

      w: 文件名使用此选项将输出定向到一个文件 

    例如:替换night为NIGHT,首先查询night,然后用文本NIGHT替换它 

     #sed ‘s/night/NIGHT/’ temp.txt

猜你喜欢

转载自jerval.iteye.com/blog/1911130