一、sed

  sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时
  缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的
  内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。
  如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清
  空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重
  定向存储输出。
  功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
  参考: http://www.gnu.org/software/sed/manual/sed.html
  用法: sed [option]... 'script' inputfile... 
  常用选项
  -n 不输出模式空间内容到屏幕,即不自动打印

  -e 多点编辑
  -f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本
  -r 支持使用扩展正则表达式
  -i.bak 备份文件并原处编辑 
  地址界定
  

  (1) 不给地址:对全文进行处理
  (2) 单地址:
  #:指定的行,$:最后一行
  /pattern/:被此处模式所能够匹配到的每一行
  (3) 地址范围:
  #,#
  #,+#
  /pat1/,/pat2/
  #,/pat1/
  (4) ~:步进
  1~2 奇数行
  2~2 偶数行sed工具 
  替换
  

  s/// 查找替换,支持使用其它分隔符,s@@@,s###
  替换标记:
  g 行内全局替换
  p 显示替换成功的行
  w /PATH/FILE 将替换成功的行保存至文件中
  示例
  

  sed ‘2p’ /etc/passwd
  sed -n ‘2p’ /etc/passwd
  sed -n ‘1,4p’ /etc/passwd
  sed -n ‘/root/p’ /etc/passwd
  sed -n ‘2,/root/p’ /etc/passwd 从2行开始
  sed -n ‘/^$/=’ file 显示空行行号
  sed -n -e ‘/^$/p’ -e ‘/^$/=’ file
  Sed‘/root/a\superman’ /etc/passwd行后
  sed ‘/root/i\superman’ /etc/passwd 行前
  sed ‘/root/c\superman’ /etc/passwd 代替行
  sed ‘/^$/d’ file
  sed ‘1,10d’ file
  nl /etc/passwd | sed ‘2,5d’
  nl /etc/passwd | sed ‘2a tea’
  sed 's/test/mytest/g' example
  sed –n ‘s/root/&superman/p’ /etc/passwd 单词后
  sed –n ‘s/root/superman&/p’ /etc/passwd 单词前
  sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
  sed –i.bak ‘s/dog/cat/g’ pets
  高级编辑命令
  P: 打印模式空间开端至\n内容,并追加到默认输出之前
  h: 把模式空间中的内容覆盖至保持空间中
  H:把模式空间中的内容追加至保持空间中
  g: 从保持空间取出数据覆盖至模式空间
  G:从保持空间取出内容追加至模式空间
  x: 把模式空间中的内容与保持空间中的内容进行互换
  n: 读取匹配到的行的下一行覆盖至模式空间
  N:读取匹配到的行的下一行追加至模式空间
  d: 删除模式空间中的行
  D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,
  并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间
  不包含换行符,则会像发出d命令那样启动正常的新循环
未完待续。。。。

sed以及awk的更多相关文章

  1. Sed、Awk单行脚本快速参考

    文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...

  2. sh脚本学习之: sh脚本 、sed、awk

    sh脚本 sh命令的批处理文件,支持更复杂的逻辑. Shell中的变量 参数 $0 当前脚本路径 $1....$n 脚本执行对应的第n个参数 条件判断 文件判断 test [op] path e存在 ...

  3. 一个利用sed和awk处理文本的小栗子

    这两天做<Linux操作系统>课程的作业,碰到了一个题目,感觉很有意思,很考验对awk掌握的熟练度,故特意拿来分享. 首先说题目是这样的,有这样一段文本: RECORD #这是多余的注释行 ...

  4. Pyp 替代sed,awk的文本处理工具

    Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反 ...

  5. sed and awk学习笔记

    sed and awk 背景 awk起源追溯至sed和grep,进而追溯至共同的行编辑器ed.实用工具grep来源于ed命令:g/re/p .实用工具awk和sed有一个共同的选项-f用于指定脚本的名 ...

  6. 三大文本处理工具grep、sed及awk的简单介绍

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  7. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  8. sed和awk最佳入门教程

    文档<sed和awk最佳入门教程>——摘自<实战linux shell编程与服务器管理>,简单易懂,适合初学者. 下载地址:http://download.csdn.net/d ...

  9. grep、sed、awk、perl、js、vim等对正则表达式的支持的差别

    grep.sed.awk.perl等对正则表达式的支持的差别 grep 2.5.1 egrep 2.5.1 sed 3.02 sed 4.07 awk 3.1.1 perl 5.8.0 vim 6.1 ...

  10. 正则、grep、sed、awk

    每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正則表達式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则仅仅使用于支持这样的表示法的工具,如:vi,grep,se ...

随机推荐

  1. poj3216 Prime Path(BFS)

    题目传送门  Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Sec ...

  2. 42.Flatten Binary Tree to Linked List

    Level:   Medium 题目描述: Given a binary tree, flatten it to a linked list in-place. For example, given ...

  3. Centos7 安装vscode

    1.官网下载vscode https://vscode.cdn.azure.cn/stable/0f3794b38477eea13fb47fbe15a42798e6129338/code-1.36.0 ...

  4. 《代码大全2》读书笔记 Week 1

    <代码大全2>第一.二.三章 隐喻思维在西方是一个热门的话题,隐喻的认知功能在各个学科正受到越来越多的重视,依照我的理解,其实就是以众所周知或者理解主体熟悉的事物为符号去将新事物.新概念具 ...

  5. Mac中的brew

    最近要研究字体识别tesseract,才了解到brew,惭愧惭愧. 1.brew是一个软件包管理工具,类似于centos下的yum或者ubuntu下的apt-get,非常方便,免去了自己手动编译安装的 ...

  6. C# 交集 差集 并集

    Intersect 交集,Except 差集,Union 并集 , , , , }; , , , , , }; var jiaoJi = oldArray.Intersect(newArray).To ...

  7. Linux Shell脚本在service模式下的环境变量

    普通Shell脚本在终端下运行时,环境变量来自于init/profile/.bash_profile等,就是在当前终端下可以得到的环境,比如PATH.在service模式下,脚本运行在受限的环境中:比 ...

  8. 二、jQuery Ajax请求

    一.Ajax请求 1.jQuery Ajax请求 let ajaxTimeOut = $.ajax({ //将网络请求事件赋值给变量ajaxTimeOut url: "/api_v1.1/a ...

  9. Codeforces 362E 费用流

    题意及思路:https://blog.csdn.net/mengxiang000000/article/details/52472696 代码: #define Hello the_cruel_wor ...

  10. springboot配置redis+jedis,支持基础redis,并实现jedis GEO地图功能

    Springboot配置redis+jedis,已在项目中测试并成功运行,支持基础redis操作,并通过jedis做了redis GEO地图的java实现,GEO支持存储地理位置信息来实现诸如附近的人 ...