博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sed 与 awk
阅读量:7176 次
发布时间:2019-06-29

本文共 1687 字,大约阅读时间需要 5 分钟。

  去图书馆借了一本书《sed&awk》,正好要坐火车,就带它上火车, 并且看了一下

  这本400多页的书,在火车上显然是看不完的,不过前面的几部分我仔细看了一下,觉得很适合入门,之前看sed与awk总觉得有些地方很别扭,这次倒是觉得,在这本书结合例题的情况下,显得很容易上手。

  正式开篇的的一段话:

  如果你正要开始学习sed与awk,最好从了解它们的共同点入手:

  • 它们都是使用相似的语法来调用
  • 它们都是面向字符流的,都是从文本文件中一次一行地读取输入,并将输出直接送到标准输出端
  • 它们都使用正则表达式进行模式匹配
  • 他们允许用户在脚本中指定指令

  我觉得这里,对我认识sed与awk最关键的一句话,就是“一次一行地读取输入,并将输出直接送到标准输出端”

  sed与awk之所以有这么多的共同点,原因之一是它们都起源于相同的行编辑器——ed

  于是文章先从介绍ed的命令模式开始,行编辑器,每次可以处理一行,这也是为什么sed与awk每次只处理一行,在ed上能用的命令,sed与awk都能调用,并且sed与awk的调用方式都可以归纳为:

command [options] script filename

  从而可以将sed与awk的命令脚本话,成为我们实用的小工具之一。

  后面开始,讲述一些正则表达式,其实对于正则表达式,我很久前就看过,但之前在wins下很少用,就忘了,现在再看,觉得只需要记得一些常用的就可以了,稍微了解一些复杂的规则,从而可以很方便的查询其匹配规则,当然关于正则表达式,一定要注意的,就是测试,看看自己是否有误。

  对于sed脚本的编写,编写脚本时一定要遵循以下的步骤:

  • 在着手做之前要弄清楚想做什么
  • 明确地描述处理的过程
  • 在提交最终的改变之前反复测试这个过程

  此外,要弄清楚sed工作的三个基本原理:

  • 脚本中的所有编辑命令都将一次应用于每个输入行
  • 命令应用于所有的行(全局的),除非行寻址限制了受编辑命令影响的行
  • 原始的输入文件未被改变,编辑命令修改了原始行的备份并且此备份被发送到标准输出

  这三个基本原理让我一下觉得sed的执行过程变得非常好理解了,这就相当于这样一个过程:

while(!EOF){    row = getline() 读取一行    row -> sedscr 用sed脚本处理这一行    print 一般情况下, 打印处理结果}

  一下就很好理解了,后面介绍的一些基本命令,就可以着手测试了,当然,我只看到基本的用法,高深的等需要的时候再看吧,不然也要忘记的。

  接下来就是awk的介绍,awk有很多经典的书介绍,其中包括《The AWK Programming Language》

  在我看来,awk很多时候跟sed是很相像的,除了需要一些特别的方式进行给出命令,但另外地,最主要的,AWK看起来更像是一个编程语言,比如,AWK里面有两个特殊测例程,它们在任何输入被读取之前和所有输入都被读取之后执行的:BEGIN 与 END。

  所以,一般情况下,把awk脚本看成3个主要部分组成:

  • 处理输入前将做的处理
  • 处理输入过程中将做的处理
  • 处理输入完成后做的处理

  有这些过程,awk看起来似乎更灵活,并且有着类似于基本C语言编程的特性,其实也很容易理解,至于后面的循环、条件、数组还有函数之类的,原理跟C差不太多,就不讲了。

  后面有一章内容,很有意思,叫做《底部抽屉》,开篇讲:本篇要证明并不是一切东西都有其特定的位置。不管怎样安排它们,有些东西看起来就是不合适。这章就是这些情况的一个汇总。考虑抽屉的主题结构,像内衣、袜子和其它每天都要用的东西放在抽屉的上部,而不经常用的东西放在底部抽屉,所有的这些东西看来都是同样可以获得的,但是你必须俯身去底部抽屉找东西。总之,需要更多的努力去得到底部抽屉的东西

  再往后,讲了一些awk的产品以及综合应用,有些应用过于复杂,我想我暂时只能勉强读一读,但有些问题比较简单,我打算尝试练习一下

  总之,《sed&awk》这本书很不错。

 

 

 

转载地址:http://aqfzm.baihongyu.com/

你可能感兴趣的文章
EMC:重新定义自己
查看>>
OSSIM系统中Sensor的设置
查看>>
SCVMM2012部署之三:安装VMM自助服务门户
查看>>
支持多核smp squid3.2 缓存反向代理【ok】~
查看>>
一个Web页面的问题分析
查看>>
草根创业回忆录一: 踏出了第一步的时候...
查看>>
情景会话:请对产品提提意见好吗?
查看>>
Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(5)
查看>>
使用组策略配置域中计算机注册表安全
查看>>
使用spotlight on unix监控linux主机
查看>>
【习惯的力量】之五让拖延见鬼去吧
查看>>
Twisted入门教程(13)
查看>>
Java通过FTP服务器上传下载文件的解决方案
查看>>
SVN “不能打开文件“.svn/lock” 权限不够”精解
查看>>
【给自己手机充值就送以下课程】
查看>>
RHEL6上安装nvidia显卡驱动
查看>>
分享Silverlight/WPF/Windows Phone一周学习导读(07月11日-07月17日)
查看>>
实战:使用NAP控制DHCP客户端接入网络
查看>>
Exchange工具08—MFCMAPI
查看>>
在Centos 7上面安装Powershell
查看>>