文本处理工具--grep、sed、awk

  Bash Shell提供了功能强大的文件处理工具:sed(流编辑器stream editor)和awk,都可使用正则表达式进行模式匹配。

而grep又有助于理解sed和awk。

1、grep

Linux系统中grep命令是一种强大的文本搜索、查找过滤工具,,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全

称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep格式:grep [选项] [模式] [文件...],它在一个或多个文件中搜索满足模式的文本行。

常用的grep选项有:
  -c 只输出匹配行的计数。
  -i 不区分大小写(只适用于单字符)。
  -h 查询多文件时不显示文件名。
  -l 查询多文件时只输出包含匹配字符的文件名。
  -n 显示匹配行及行号。
  -s 不显示不存在或无匹配文本的错误信息。
  -v 显示不包含匹配文本的所有行。

eg:(在前一篇正则表达式中已经写到了,这里偷个懒,把昨天的图用一下吧)

2、sed

  sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed

的输入,经过一系列编辑命令转换为另一种格式输出。 sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相

同的。
sed命令行的基本格式为:
  sed option 'script' file1 file2 ...

  sed option -f scriptfile file1 file2 ...
 sed处理的文件既可以由标准输入重定向得到,也可以当命令行参数传入,命令行参数可以多次传入多个文件,sed会依次处理。 sed

的编辑命令可以直接当命令行参数传入,也可以写成一个脚本文件然后用-f参数指定,编辑命令的格式为:

  /pattern/action

  其中pattern是正则表达式,action是编辑操作。 sed程序一行一行读出待处理文件,如果某一行与pattern匹配,则执行相应的action,

如果一条命令没有pattern而只有action,这个action将作用于待处理文件的每一行。

sed命令告诉sed如何处理由地址指定的各输入行,如果没有指定地址则处理所有的行。
命令
  a\ : 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行
  c\ :用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每⾏末尾需用”\"续行
  i\ :在当前行之前插入文本。多行时除最后一行外,每行末尾需用”\"续行删除行
  h : 把模式空间里的内容复制到暂存缓冲区
  H : 把模式空间里的内容追加到暂存缓冲区
  g : 把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容
  G: 把暂存缓冲区的内容追加到模式空间⾥,追加在原有内容的后面
  l : 列出非打印字符
  p : 打印行
  q : 结束或退出sed
  r : 从文件中读取输入行
  ! : 对所选行以外的所有行应用命令
  s : 用一个字符串替换另一个
  g : 在行内进行全局替换
  w : 将所选的行写入文件
  x : 交换暂存缓冲区与模式空间的内容
  y : 将字符替换为另一字符(不能对正则表达式使用y命令)
选项
  -e : 进行多项编辑,即对输入行应用多条sed命令时使用
  -n : 取消默认的输出
  -f :指定sed脚本的文件名

3、awk

  sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件。 awk缺省的行分隔符是换行,缺

省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义,比如/etc/passwd文件的每一行有干个字段,字段之间以:分

隔,就可以重新定义awk的列分隔符为:并以列为单位处理这个文件。 awk实际上是一门很复杂的脚本语言,还有像C语言一样的分支和

循环结构,但是基本语法和sed类似,awk命令行的基本形式为:

  awk option 'script' file1 file2 ...


  awk option -f scriptfile file1 file2 ...
  
  和sed一样,awk处理的文件既可以由标准输入重定向得到,也可以当命令行参数传入,编辑命令可以直接当命令行参数传入,也可以

用-f参数指定一个脚本文件,编辑命令的格式为:

  /pattern/{actions}

  和sed类似,pattern是正则表达式,actions是一系列操作。 awk程序一行一行读出待处理文件,如果某一行与pattern匹配,或者满

足condition条件,则执行相应的actions,如果一条awk命令只有actions部分,则actions作用于待处理文件的每一行。

eg:

注:

$0:表示当前行

$1:表示当前行的第一列

$2:表示当前行的第二列

Linux--shell脚本之文本处理工具的更多相关文章

  1. Linux Shell脚本攻略 读书笔记

    Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

  2. 老李分享:《Linux Shell脚本攻略》 要点(四)

    老李分享:<Linux Shell脚本攻略> 要点(四)   1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2. ...

  3. 老李分享:《Linux Shell脚本攻略》 要点(二)

    老李分享:<Linux Shell脚本攻略> 要点(二)   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...

  4. 读《Linux Shell脚本攻略》(第2版) 总结

    前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 说下这本书的难度吧.纯新手或者只懂少部分编程知识的人,读起来还是有很大难度的.以我为 ...

  5. 读《Linux Shell脚本攻略》(第2版) 一遍、二遍体会

    前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 第一遍体会解读:就像黑夜中的灯塔,指明前进的道路. 推荐指数:强烈推荐. 书中讲解的 ...

  6. LINUX SHELL脚本攻略笔记[速查]

    Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...

  7. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  8. Linux Shell脚本攻略

    -Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...

  9. linux ——shell 脚本

                                                      linux—shell 脚本  精简基础                 2018/10/30 13 ...

  10. shell脚本--显示文本内容

    shell脚本显示文本内容及相关的常用命令有cat.more.less.head.tail.nl 首先是cat,cat最常用的就是一次性显示文件的所有内容,如果一个文件的内容很多的话,那么就不是很方便 ...

随机推荐

  1. iOS集成友盟推送

    之前有写过利用Python自己写一个推送服务器, 今天说下如果集成友盟的推送服务 在这之前我们需要做一些准备动作 #1. 注册一个App ID #2. Enable Push Notification ...

  2. mysql数据库开始——增删改

    注释语法:#注释语 一.T-SQL语句注意:1.语句写完后用“分号:”代表这一句结束2.列结束用逗号,最后一列写完不用写逗号3.符号一定是英文的 关键字:主键:primary key外键:foreig ...

  3. Codevs3278[NOIP2013]货车运输

    3287 货车运输 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond      题目描述 Description A 国有 ...

  4. Windows定时计划执行Python

    先看下定时执行的py文件 #coding:gbk from selenium import webdriver import time,os driver = webdriver.PhantomJS( ...

  5. ASP.NET脚本过滤-防止跨站脚本攻击(收集别人的)

    ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用<xxxx>之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个 HttpRe ...

  6. #include<bits/stdc++.h>

    在听学长讲课时看到了#include<bits/stdc++.h>这个头文件,瞬间懵逼辣,百度后了解了 #include<bits/stdc++.h>,包含了C++的所有头文件 ...

  7. java 学习 todoList

    1.并发包的使用 2.线程相关的源码,怎么结束一个线程 3.单例模式代码 4.mixin 相关的理解代码 书单: effective java java 编程思想 spring 编程指南 深入理解jv ...

  8. windows python flask上传文件出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads'的解决方法

    在浏览器中输入时,出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads' http://127.0.0.1: ...

  9. 2015.07.12hadoop伪分布安装

    hadoop伪分布安装   Hadoop2的伪分布安装步骤[使用root用户用户登陆]other进去超级用户拥有最高的权限 1.1(桥接模式)设置静态IP ,,修改配置文件,虚拟机IP192.168. ...

  10. Nginx网站使用CDN之后禁止用户真实IP访问的方法

    做过面向公网WEB的运维人员经常会遇见恶意扫描.拉取.注入等图谋不轨的行为,对于直接对外的WEB服务器,我们可以直接通过 iptables .Nginx 的deny指令或是程序来ban掉这些恶意请求. ...