shell文本处理工具总结

为了效率,应该熟练的掌握自动化处理相关的知识和技能,能力就表现在做同样的一件事情,可以做的很好的同时,耗时还很短。

再次总结shell文本处理的相关规则,对提高软件调试效率,加快数据处理分析都很有帮助。

Shell常用的文本处理工具,主要是4种:sed,grep,gawk,正则表达式。

1. sed

这是一种流式编辑器,区别于普通的交互式编辑器的地方是在处理文本前,需要提前设定好一组规则,它会每次读取一行,按照规则匹配输出,循环往复,直到处理完毕为止;

命令格式为: sed options script file,

具体如下: sed [-Ealn] command [file ...] sed [-Ealn] [-e command] [-f command_file] [-i extension] [file ...]

常用的处理命令有:

sed -e 'cmd1; cmd2; cmd3 ... ;cmdn' file , 连续执行多个命令;

sed -n, 不要自动为每个命令生成输出;

sed 's/a/b/' file, 将file里面的a换成b;

sed '/pattern/d' file, 将file里面匹配pattern的行删除;

sed '/pattern/{n;d}' file,将file里面匹配pattern的行找到,将其下一行删除;

sed '/pattern/{N; s/a/b/}' file, N选项会使得文本行仍然用换行符处理,但是会合并当成一行处理,所以这里的意思是将file里面匹配pattern的行找到,将下一行和在一起,将里面的a替换成b;

sed 'N; /pattern/D' file, 将file里面两行一起的处理,匹配到pattern后,将前面的一行删除,D也是一个多行处理选项;

sed 在shell脚本中使用多个命令,{ 和 }都单独各占一行; sed ‘1a \xxx’第一行后追加1行 sed ‘1i \xxx’第一行后插入1行 sed -n '^$/!p' 打印全部文件内容 sed -n '1,10p' 打印1-10行内容

2. grep

命令格式为:grep options pattern file

grep -r 递归目录查找

grep -n 打印行数

grep -i 忽略大小写

grep -v 反向匹配查找

grep -F -f 可以用来处理获得两个文件的交集,或者差集;

3. gawk

gawk是awk的gnu版本,该工具让流编辑器上了一层台阶,可以提供一个类编程的环境,而不再仅仅是一个命令行工具。

命令格式为: gawk options program file,

gawk会从标准输入等待数据的输入,program用一对花括号来定义; 数据字段变量,$0表示整个文本行,$n表示第n个数据段 一些重要的内建变量:FILEDWIDTH, FS,RS,OFS,ORS; BEGIN表示处理前运行的操作, END表示处理结束后运行的操作; 支持if,while,do-while等函数定义;

4. sort

sort -k 指定排序的栏;

sort -r 反转排序,数字默认的是由小到大;

sort -n 指定按照数字排序;

5. 正则表达式

在shell中熟练使用sed和awk的关键在于对正则表达式的运用,正则表达式,就是一套有用户定义的,用来过滤数据流的规则。

正则表达式的难点在于,linux环境下不同的应用程序可能有不同的正则表达式规则。

再次总结通用的两种类型: BRE(basic regular expression),基本上都支持这种规则, ERE(extend regular expression),扩展类型,部分应用程序支持(gawk可以,sed不行);

BRE的规则主要有:

^ 行首

$ 行尾

. 任意字符,除了换行符

* 任意字符出现一次或者多次

[] 区间匹配

[^abc] 排除字符组

[[:alpha:]] 匹配字母,不区分大小写

[[:alnum:]] 匹配数字和字母,不区分大小写

[[:digit:]] 匹配数字

[[:blank:]] 匹配空格或者tab

[[:print:]] 匹配可打印字符

[[:punct:]] 匹配标点符号

[[:space:]] 匹配任意空白字符

[[:lower:]] 匹配小写

[[:upper:]] 匹配大写

ERE的规则主要有:

?前面的字符出现0次或者1次

+ 前面的字符出现1次或者多次

| 可以将两个过滤表达式按照或的关系连起来

{m} 前面的字符出现m次

{n,m} 前面的字符出现n-m次

() 将括号内部的匹配聚合成一个整体,当成一次标准字符使用;

shell文本处理工具总结的更多相关文章

  1. Linux shell文本处理工具

    搞定Linux Shell文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习She ...

  2. Linux Shell 文本处理工具集锦 zz

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  3. Linux Shell 文本处理工具集锦

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...

  4. [转] Linux Shell 文本处理工具集锦

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  5. Linux Shell 文本处理工具集锦(转载)

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  6. Shell 文本处理工具

    转载自:http://www.cnblogs.com/wish123/p/5540210.html Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uni ...

  7. Linux Shell 文本处理工具

    Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk: 提供的例子和参数都是最常用和最为实用的: 我对 ...

  8. Linux Shell 文本处理工具集锦--Awk―sed―cut(row-based, column-based),find、grep、xargs、sort、uniq、tr、cut、paste、wc

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...

  9. Linux Shell 文本处理工具集锦【转】

    转自:http://www.cnblogs.com/me115/p/3427319.html 内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq ...

随机推荐

  1. Max answer(The Preliminary Contest for ICPC China Nanchang National Invitational)

    Alice has a magic array. She suggests that the value of a interval is equal to the sum of the values ...

  2. jQuery与Aiax应用

    Ajax(一部JavaScript和XML) 优势: ①不需要插件支持 ②优秀的用户体验:能在不刷新整个页面的前提下更新数据,这使得web应用程序能更为迅速地回应用户的操作. ③提高web程序的性能: ...

  3. 《Linux就该这么学》,刘小伙实在人,给打个广告

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  4. CentOS7密码忘记解决方法&&GRUB菜单加密

    CentOS7的root密码忘记怎么办 注意:该方法只适用于Linux7版本,可以用cat /redhat-release 查看 这里这里只介绍一种方法 1.启动的时候,在启动界面,相应启动项,内核名 ...

  5. 设置vim tab为4个空格

    Vim 编辑器默认tab为8个空格,但对于pythoner来说,必须要调整到4个空格. 方法如下: 在~/.vimrc文件中加入下面设置: set ts=4 #设置tabstop为4个空格 set e ...

  6. django中的分页管理

    有时,展示的对象太多,需要对他们进行分页展示,不能一页把所有的结果都展示出来吧,那样的话,哈哈,挺逗 使用Django分页器功能 从Django中导入Paginator模块(没有的话,自行下载,我是w ...

  7. Redis ---------- 持久化(AOF)操作

    每小时做一次快照持久化 8:00 快照持久化 9:00 快照持久化 10:00  快照持久化  上帝想玩弄人类,突然停电,55万个key丢失了 11:00 快照持久化 解决方案: 8:00-9:00在 ...

  8. Ubuntu16.04下配置ssh免密登录

    Ubuntu16.04下配置ssh免密登录 环境准备:新建两台虚拟机,而且两台虚拟机上都装有Ubuntu16.04的系统,使两台虚拟机之间保持互通状态.分别为两台虚拟机命名为A,B.假设我们要使A虚拟 ...

  9. PyCharm 的安装与入门操作

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...

  10. Python9-数据类型-day3

    数据类型转换 #int----->str s = 1 i = str(s) print(i) #str----->int s = ' i = int(s) print(i) #int--- ...