文本处理三兄弟(grep,sed,awk)

linux文本处理三剑客:

grep:文本过滤工具

grep  egrep=grep -e  fgrep

sed:流编辑器  处理多个行 

awk:文本编辑工具,格式化工具

grep [OPTIONS] PATTERN [FILE…] :

文本处理搜索工具,根据用户指定的“模式”对目标文本进行匹配检查;打印匹配到的行

选项:

  • –color=auto: 对匹配到的文本着色显示
  • -v: 显示不被pattern匹配到的行
  • -i: 忽略字符大小写
  • -n: 显示匹配的行号
  • -c: 统计匹配的行数
  • -o: 仅显示匹配到的字符串
  • -q: 静默模式,不输出任何信息
  • -A #: after, 显示匹配到的行和后#行
  • -B #: before, 显示匹配到的行和前#行
  • -C #:context, 显示匹配到的行和前后各#行
  • -e: 实现多个选项间的逻辑or关系。grep –e ‘cat ’ -e ‘dog’ file
  • -w: 整行匹配整个单词
  • -E: 使用扩展正则表达式
  • -F: 相当于fgrep,不支持正则表达式

grep命令使用简单实例
1.显示所有以d开头的文件中包含 test的行

$ grep ‘test’ d*

2.显示在aa,bb,cc文件中匹配test的行。

$ grep ‘test’ aa bb cc

3.显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep ‘[a-z]\{5\}’ aa

4.如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。

$ grep ‘w\(es\)t.*\1′ aa

如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

#有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。


sed   [options] ‘command’ file(s)  

sed [options] -f scriptfile file(s)

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容 ,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变 ,除非你使用重定向存储输出。Sed主要用来自动编辑一 个或多个文件,简化对文件的反复操作,编写转换程序等

-n   不输出模式空间中的内容到屏幕
-e  多点编辑   可以在一个sed命令中  同时处理多个脚本
-f  每行一个编辑命令  sed 脚本
-r   支持扩展的正则表达式
-l   直接编辑原文件
地址定界:
1.空地址:对全文进行处理
2.单地址:
#:指定行;
/pattern/:被此模式所匹配到的行; 注意/ /双斜线必须写  这是格式要求

3.地址范围:
#,#
#,+#
#,/pat1/
/pat1/,/pat2/
4.步进:(隔一行编辑)
1-2:所有的奇数行

2-2:所有的偶数行

编辑命令:
 d: 删除
p:  显示模式空间中的内容
a:\text:在行后面追加文本“text”,支持使用\n 实现多行追加
l:\text:在行前面插入文本“text”,支持使用\n实现多行插入     (转义)
c:\text:把匹配到的行替换为此处指定的文本“text”(替换一整行而不是某一个)O
w: /PATH/TO/SOMEFILE:保存模式空间到的行至指定的文件中
r 把一个文件下的内容添加到所读的文件中去  文件合并 
比如  sed ‘3r /etc/fstab /etc/passwd
把/passwd这个文件添加到   /fastab中   从第三行开始


= :为模式匹配到的行打印行号
!:条件取反  相当于^
地址定界!编辑命令
s///:查找替换,其分隔符可自行指定,常用的有s@@@,s###等
替换标记:
g:全局替换
w /PATH/HOMEFILE :将替换成功的结果保存至指定文件中
p:显示替换成功的行

高级编辑命令:
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g:把保持空间中的内容覆盖至模式空间中
G:把保存空间中的内容追加至模式空间中
x:把模式空间中的内容与保持空间中的内容互换
n:覆盖读取匹配到的行下一行至模式空间中
N:追加读取匹配到的行下一行至模式空间中
d:删除模式空间中的行
D:删除多行模式空间中的所有行
示例
sed -n ‘n;p FILE :显示偶数行
sed ‘1!G;h;$!d’ FILE :逆序显示文件中的内容
sed ‘$!d FILE : 取出最后一行
sed ‘$!N;$!D’ FILE :显示文件的后两行
sed ’/^$/d;G FILE :删除原有的所有的空白行 而后为每一行后面都加上空白行
sed ‘n;d’ FILE :显示奇数行 
sed ‘G’ FILE :在原有的每行后方添加一个空白行

注意:
sed -i 是直接修改原文件,不是在模式空间 慎重 慎重 慎重

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

原创文章,作者:All well,如若转载,请注明出处:http://www.178linux.com/72311

(0)
All wellAll well
上一篇 2017-04-01
下一篇 2017-04-01

相关推荐

  • https介绍

    什么是https HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering T…

    Linux干货 2017-12-04
  • 马哥教育网络班21期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 # cp -a /etc/skel /home/tuser1 # chmod -R g-rwx,o-rwx /home/tuser1/ 2、编辑…

    Linux干货 2016-07-16
  • Linux基本命令

    基本命令 1、用户 1、  root  :超级用户 2、  普通用户(生产环境一般使用普通用户) 2、终端terminal 1、  设备终端 :鼠标、显示器 2、  物理终端 (/dev/console): 1.       控制台 3、 …

    Linux干货 2017-04-17
  • linux系统自动安装之PXE

    PXE(集成在网卡上的)预启动执行环境 (能够通过网络实现操作系统安装) PXE工作原理1、Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client2、Client向P…

    2018-01-16
  • vim基本总结

    ASCII可以将计算机存储的0或1转成我们认识的文字。在Linux中,绝大部分的配置文件都是以ASCII的纯文本形态存在。通过文本编辑器,可以实现对这些文本文件的更改。常风的文本编辑器有emacs, pico,nano,joe与vi(vim是vi的升级版)等。那么为会么要学vi呢? l 因为vi是内置编辑器,系统安装好就有了 l 很多软件…

    2017-08-05
  • CentOS7下使用rmcli配置IP地址详解及网络连接状态查看工具和进程管理工具的使用

    一、在CentOS7中推荐使用nmcli工具来管理网卡配置,nmcli是NetworkManager Command-Line Interface(网络管理命令行接口)的简称,可以通过它以命令行的方式管理网卡。也可以使用nmtui管理工具,nmtui是NetworkManager Text-User Interface(网络管理文本用户接口)的简称,它提供的…

    Linux干货 2016-09-07