• sed 一 文本处理工具


    简介

    sed 采用的是流编辑模式:
    	最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。
    
    
    sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中。
    
    
    此命令执行数据的顺序如下:
    	1. 每次仅读取一行内容。根据提供的规则命令匹配并修改数据。
    	   注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
    	2. 将执行结果输出。
    	3. 当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。
    

    sed 基本选项

    sed [选项] [脚本命令] 文件名
    
    	选项	
    	-e	脚本命令,该选项会将其后跟的脚本命令添加到已有的命令中。
    
    	-f	脚本命令文件,该选项会将其后文件中的脚本命令添加到已有的命令中。
    
    	-n	默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,
    		而该选项会屏蔽启动输出,需使用 print 命令来完成输出。
    
    	-i	此选项会直接修改源文件,要慎用。
    

    查找替换

    s
    	查找替换脚本命令。此命令的基本格式为:
    		[address]s/pattern/replacement/flags
    
    	address 表示指定要操作的具体行,
    	pattern 指的是需要替换的内容,
    	replacement 指的是要替换的新内容。
    
    	flags标记
    		选项
    		n	1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,
    			例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;
    
    		g	对数据中所有匹配到的内容进行替换,
    			如果没有 g,则只会在第一次匹配成功时做替换操作。
    		p	会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。
    		w file	将缓冲区中的内容写到指定的 file 文件中;
    		&	用正则表达式匹配的内容进行替换;
    		
    	匹配第 n 个子串,该子串之前在 pattern 中用 () 指定。
    			转义(转义替换部分包含:&、等)。
    
    
    sed -n "s/aa[a-z]aa/aa666aa/p" ld
    	查找替换并打印
    

    常见命令

    astring  在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“”续行
     
    c  用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用""续行
     
    i  在当前行之前插入文本。多行时除最后一行外,每行末尾需用""续行
     
    d   删除行
     
    h   把模式空间里的内容复制到暂存缓冲区
     
    H   把模式空间里的内容追加到暂存缓冲区
     
    g   把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容
     
    G   把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面
     
    l   列出非打印字符
     
    p   打印行
     
    n   读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理
     
    q   结束或退出sed
     
    r   从文件中读取输入行
     
    !   对所选行以外的所有行应用命令
     
    s   用一个字符串替换另一个
     
    g   在行内进行全局替换
     
    w   将所选的行写入文件
     
    x   交换暂存缓冲区与模式空间的内容
     
    y   将字符替换为另一字符(不能对正则表达式使用y命令)
    

    示例

    sed "2d" ld
    	删除第二行
    
    sed "/[0-9]/d" ld
    	用正则匹配数字的行并删除
    
    sed "/12/d" ld
    	匹配12的行并删除
    
  • 相关阅读:
    mongdb 拓展的下载地址和编译安装(php)
    Linux-CentOs7-svn安装及钩子配置
    centos 安装php7、pecl 、swoole、redis拓展
    MOD 10,11算法(GB/T 17710-1999 数据处理 校验码系统 )的 Python实现
    .NetCore源码阅读笔记系列之HttpAbstractions(五) Authentication
    .NetCore源码阅读笔记系列之Security (四) Authentication & AddJwtBearer
    .NetCore源码阅读笔记系列之Security (三) Authentication & AddOpenIdConnect
    .NetCore下利用Jenkins如何将程序自动打包发布到Docker容器中运行
    如何将自己的Image镜像Push到Docker Hub
    Kubernetes图形化归纳总结基础介绍整理
  • 原文地址:https://www.cnblogs.com/loveer/p/11622042.html
Copyright © 2020-2023  润新知