一.基本用方法
1.sed文本处理工具的用法
用法1:前置命令 | sed  [选项]  '条件指令'
用法2:sed  [选项]  '条件指令'  文件.. ..
注意:没有条件时候,默认所有条件,默认输出全部,默认修改临时文件
2.基本选项
-n 静默输出,屏蔽默认输出
-r 支持扩展正则
-i 直接修改源文件
行号案例:
# sed -n '1p'       /etc/hosts        ---> 输出第一行
# sed -n '3,6p'     /etc/passwd       ---> 输出4行(3.4.5.6)
# sed 'd'           /etc/passwd       ---> 删除所有行(源文件无变化)
# sed -i '1,3d'     /1.txt            ---> 删除源文件1-3行
# sed -n '1p;4p'    /etc/passwd       ---> 输出第1、第4行
# sed -n '3,+10p'   /etc/passwd       ---> 打印第3行以及后面的10行(从第4行开始的10行)
# sed -n '1~2p'     /etc/passwd       ---> 打印所有的奇数行
# sed -n '2~2p'     /etc/passwd       ---> 打印所有的偶数行
正则案例:
# sed -n '/bash/p'  /etc/passwd       ---> 打印包含bash的行
# sed -n '/bash$/p' /etc/passwd       ---> 打印以bash结尾的行
# sed -n '/^bash/p' /etc/passwd       ---> 打印以bash开头的行
# sed -n '/^bash/!p' /etc/passwd      ---> 打印以非以bash开头的行
# sed -n 'p'        /etc/passwd       ---> 没有条件,表示匹配所有
# sed -n '$='       /etc/passwd       ---> 输出文件的行数 == cat /etc/passwd | wc -l
正则案例: d 删除指令 (不加 -n,不加p)
# sed '3,5d'        a.txt             ---> 删除3-5行
# sed '3d;5d;'      a.txt             ---> 删除第3行、第5行
# sed '/xml/d'      a.txt             ---> 删除包含xml的行
# sed '/xml/!d'     a.txt             ---> 删除不包含xml的所有行
# sed '$d'          a.txt             ---> 删除文件的最后一行
# sed '/^$/d'       a.txt             ---> 删除所有空行
正则案例: s 替换指令
# sed 's/111/qqq/'  a.txt             ---> 将每行的第1个111替换为qqq
# sed 's/111/qqq/3' a.txt             ---> 将每行的第3个111替换为qqq
# sed 's/111/qqq/g' a.txt             ---> 将所有的111都替换为qqq
# sed 's/111//g'    a.txt             ---> 将所有的111都替换成空格(1个为1空格)
# sed '1,3s/^/# /'  a.txt             ---> 给1-3行的开头添加“ # ”,即注释掉
# sed '1,3s/^# //'  a.txt             ---> 将1-3行开头的注释去掉
# sed -n 's/2017//2p'  a.txt          ---> 将每行第2个2017替换成空格并只显示改过的行
# cat a.txt | sed -n '/^d/p' | tr [a-z] [A-Z] --->找到以d开头的行,统一大写输出
# cat a.txt | tr 'A-Z' 'a-z'   ==  tr 'A-Z' 'a-z' < cat a.txt --->大写转小写 
替换操作的分隔“/”可改用其他字符,如#、&等
# sed 's#/bin/bash#/sbin/sh#' a.txt   ---> 将/bin/bash替换为/sbin/sh
正则实例1:# cat 2.txt
Hello world
ni hao beijing
# sed 's/./8/8'        2.txt          ---> 将每行中第8个字符替换成8 (空格算一个字符)
# sed 's/.//2;s/.$//'  2.txt          ---> 将每行第2个字替空;将每行最后字替空
# sed -r 's/^(.)(.)(.*)(.)$/\1\3/'      2.txt  将每行第2个字替空;将每行最后字替空
正则实例2:将文件中每行的第一个、倒数第1个字符互换
# sed -r 's/^(.)(.*)(.)$/\3\2\1/'       2.txt
正则实例3:删除所有数字、行首空格  (尽量多用*)
# sed -r 's/[0-9]//g;s/^[ \t]*//'      2.txt
# sed -r 's/[0-9]//g;s/^ +//'          2.txt
# sed -r 's/[0-9]//g;s/^( )+//'        2.txt
# sed -r 's/[0-9]//g;s/^( )*//'        2.txt
正则实例4:每行第1个数字、行首空格  (尽量多用*)
sed -r 's/[0-9]//;s/[[:space:]]//' a.txt
删除所有数字、所有空格
# sed -r 's/[0-9]//g;s/[[:space:]]*//g' 2.txt
# [:alnum:] 所有的字母和数字
# [:alpha:] 所有的字母
# [:blank:] 所有呈水品呈现的空白字符
# [:cntrl:] 所有的控制字符
# [:digit:] 所有的数字
# [:graph:] 所有的打印字符,不包含空格
# [:lower:] 所有的小写字母
# [:print:] 所有的可打印字符,包括空格
# [:punct:] 所有的标点字符
# [:space:] 所有呈水平、或垂直排列的空白字符
# [:upper:] 所有的大写字母
# [:xdigit:] 所有的16进制数
#  [=字符=]   所有和指定字符串相等的字符
正则实例3:为文件中每个小写字母添加括号
# sed -r 's/([a-z])/(\1)/g'             2.txt
全添加:
# sed -r 's/([a-zA-Z0-9])/(\1)/g'       2.txt
 
二.sed多行文本处理
2.1 基础语法
# sed [选项] '条件指令' 文件..
  sed工具的多行文本处理操作:
     i:在指定的行之前插入一行对应文本
     a:在指定的行之后插入一行对应文本
     c:替换指定的行
案例:
# sed '2a XX'     a.txt ---> 在第2行后面追加一行:XX
# sed '2i XX'     a.txt ---> 在第2行前面追加一行:XX
# sed '2c XX'     a.txt ---> 将第2行替换为:XX
# sed 's/$/EEE/'  a.txt ---> 将EEE追加到每一行后
# sed '1s/^/EEE/' a.txt ---> 将EEE追加到第一行前   
# m: 每一行前隐藏了一个"^" ;每一行后隐藏了一个"$".
2.2 文件读写
r:读取文件
# sed '3r b.txt'  2.txt ---> 将b.txt的内容读如到2.txt的第3行【要-i,如果不加行号(数字),但一定要有r,默认给每一行行后(插入)读一遍) 】   
2.3 复制和粘贴
#:h 覆盖的复制
#:H 追加的复制 (不会覆盖剪切板里面的东西,即剪切版里面的还行还在,换行+内容)
#:g 覆盖的粘贴 (替换原来行内容)
#:G 追加的粘贴  (在行后插入对应内容)
案例:
# sed '1h;3G'     1.txt ---> 将文件的第1行插到第3行后面,即增加1行
# sed '1H;3G'     1.txt ---> 在第3行后插入换行和第1行内容(默认有个换行)
# sed '1h;3g'     1.txt ---> 用第1行的内容替换第3行的内容

Shell 05 Sed的更多相关文章

  1. [shell基础]——sed命令

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

  2. Linux shell利用sed如何批量更改文件名详解[转载]

     需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...

  3. shell中sed的简单使用

    sed命令行格式为:         sed [-nefri]  ‘command’  输入文本/文件        常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一 ...

  4. Shell之sed编辑器

    Shell之sed编辑器 目录 Shell之sed编辑器 一.sed编辑器 1. sed编辑器概述 2. sed编辑器的工作流程 二.sed命令 1. 命令格式 2. 常用选项 3. 常用操作 三.操 ...

  5. Makefile Shell 脚本;sed命令

    1. 在Makefile中想使用shell脚本,需要添加"@"符号,例如: @if [ -d xxx ]; then \                        //-d 判 ...

  6. Shell之sed命令

    sed用于一次性处理所有的编辑任务,尤为高效,为用户节省了大量的时间,sed适用于以下三种场合: 1.编辑相对交互文本编辑器而言太大的文件: 2.编辑命令太复杂,在交互式文本编辑器中难以输入的情况: ...

  7. shell脚本 sed工具

    sed工具概述(流式编辑器)非交互,基于模式匹配过滤及修改文本逐行处理,并将结果输出到屏幕可实现对文本的输出,增,删,改,查等各种操作 sed流控制:!:取反操作,根据定址条件取反n:读下一行,产生隔 ...

  8. [转]shell awk sed tr grep 语法汇总

    tr 基本语法 -c          # 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII  -d          # 删除字符串1中所有输入字符  -s          # 删除所 ...

  9. shell的sed命令

    sed命令用于在线编辑文本,它一次处理一行内容. 命令语法: sed [-n/e/f/r/i] [cmd] [InFile] 参数解释: 选项与参数: -n: quiet/silent,安静模式,经过 ...

随机推荐

  1. SAS学习笔记10 宏变量

    一个宏变量存放的值保持不变直到被修改(全局变量) 引用时,变量名前加上"&" 宏变量在引用时放在双引号之间会被解读(单引号不会被解读) 用户定义的宏变量,有三种方式: %l ...

  2. SpringBoot 第二篇:SpringBoot配置文件使用

    背景 项目跑起来,和以前相比,现在的配置文件能干什么?SpringBoot 项目的配置文件就是创建项目时,自带的 application.properties ,打开里面空空如也.这个文件里面的语法是 ...

  3. 并不对劲的THUWC2020

    day -inf 因为一些(不是寒假时长锐减的)小原因,今年(2020)THUWC在去年(2019)就举办了! 这导致某个小弱智只能临阵磨枪了QAQ- day 1 早: 没有看到吕爷,签到.试机. 签 ...

  4. MarkdownPad2安装与破解-转载

    MarkdownPad安装包下载链接链接:https://pan.baidu.com/s/1o7c4W7C2d8zCPh5z7y4IvQ提取码:e4bf 下载解压之后,找要MarkdownPad2.e ...

  5. javascript 垃圾回收机制和内存管理

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 垃圾回收机制的原理是找到不再被使用的变量,然后释放其占用的内存,但这个过程不是时时的,因为其开销比较大,所 ...

  6. C语言并查集例子——图问题巧用parent[]数组

    输入:测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M:随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城 ...

  7. 从零开始搭建自己的.NET Core Api框架-1目录

    https://www.cnblogs.com/RayWang/p/9216820.html 系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. ...

  8. layui下拉多选formSelects使用方法

    下载formSelects-v4插件(引入formSelects-v4.css和formSelects-v4.js) 下载地址:https://fly.layui.com/extend/formSel ...

  9. Ubuntu 文件和目录常用命令

    目标 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 > 和 &g ...

  10. 文本三剑客之grep及正则表达式

    1.grep 1. 什么是grep.egrep和fgrep Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红).grep全称是Glo ...