文档章节

SegmentFault 技术周刊 Vol.19 - Linux 文本处理三利器

SegmentFault
 SegmentFault
发布于 2017/01/05 11:58
字数 1300
阅读 3
收藏 0

weekly-vol019

之前看过一篇文章《当我们 chmod 777 的时候,到底干了些什么?》,最近又想起来,让人不得不感叹前辈大神们的厉害,创造出如此多各样用途、各种使用方式的命令,以至于连文件权限 chmod 这样一种命令,都有这么多处理方式:

→ bash
bash-3.2$ chmod
usage:  chmod [-fhv] [-R [-H | -L | -P]] [-a | +a | =a  [i][# [ n]]] mode|entry file ...
	    chmod [-fhv] [-R [-H | -L | -P]] [-E | -C | -N | -i | -I] file ...

回到主题,在使用 Linux 的过程,我们最常用的操作命令可能就是对文本文件的处理了:find / grep / sort / cut / awk / sed / uniq / tee / tr / diff / cmp / split / xargs 等,每天都会用到诸如这些操作。所以,本期周刊将介绍命令行世界中最常用的文本处理命令——awk, sed, grep 三巨头,让它们带你初步领略命令行的强大。

0. 进入命令行世界

Linux 有哪些常见的使用命令,shell 编程有哪些常用的命令,无论你是菜鸟还是老鸟,@AlphaGooo 的两篇归纳整理,总是可以用得到。而在第三篇中,引入今天的主题,作者甚至称 sed 和 awk 为“Linux 系统的两个神级工具”。

1. awk

AWK 是一门解释型的编程语言,在处理文本文件时,它又是非常强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho, Peter Weinberger 和 Brian Kernighan 的姓氏首字母。

简单的,可以直接理解为「awk 是一个数据处理工具」,倾向于将一行文本分成数个“字段”来处理,适合小型数据的处理。

一篇基础介绍,一篇译自著名的《AWK Tutorial》的全面学习指南,再几篇使用案例,再好不过。

2. sed

SED 的英文全称是 Stream Editor,本质上是一个编辑器,但是它是非交互式的,这点与 VIM 不同;同时它又是面向字符流的,输入的字符流经过 SED 的处理后输出。这两个特性使得 SED 成为命令行下面非常有用的一个处理工具。

SED 也是一个管道命令,可以分析 standard input 的,主要是用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、心中、选取特定行等功能。区别于 AWK,你可以从它的这几种典型用途中看出:文本替换、选择性的输出文本文件、从文本文件的某处开始编辑、无交互式的对文本文件进行编辑。

3. grep

globally search a regular expression and print(以正规表示法进行全域查找以及打印),g/re/p。在给出文件列表或标准输入后,它会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。

关于 grep,一个有 40 年历史的 Unix 命令 // GitCafe

“在我公开 grep 这个命令之前的很长一段时间里它都是我的私有命令。” Unix 的创造者 Ken Thompson,也是 grep 的作者。该文讲述了一段过往历史,在 grep 的发明背后,fgrep 和 egrep 的等修改版一直在被人使用,却甚少有大众知道。

Linux 基础命令介绍五:文本过滤 grep // vvpale

作者的这个 Linux 基础命令介绍系列,非常值得阅读,基本每一块都做到了非常详细地步骤化解说,简直 excited!

4. 彩蛋:你不知道的有趣命令

接下来,我们会陆陆续续推出好几期关于 Linux 命令行的主题周刊,也将在每期都增加一部分好玩的知识了解,本期是「有(wu)趣(yong)的命令」:screenfetch、fortune、toilet、ddate、sl……炫酷无敌,可是…哈哈哈哈哈哈哈。

(本期完) <br>


# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。周刊筛选的每篇内容,是作者的独到见解,踩坑总结和经验分享。

每周二更新,欢迎「关注」或者「订阅」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。

© 著作权归作者所有

共有 人打赏支持
SegmentFault
粉丝 15
博文 24
码字总数 41594
作品 2
杭州
高级程序员
私信 提问
OSChina 技术周刊第二十五期 —— 每周技术精粹

每周技术抢先看,总有你想要的! 移动开发 【翻译】AngularJS 应用访问 Android 手机的照片库 【软件】跨平台移动端开发 NativeScript 【博客】Android Studio建立jni开发环境 【博客】Xamar...

OSC编辑部
2015/03/15
2.6K
3
OSChina 技术周刊第十四期 —— 每周技术精粹

每周技术抢先看,总有你想要的! 移动开发 【软件】医疗和生物医学移动应用框架 mHealhDroid 【博客】Android Studio 使用NDK开发 【博客】Android 4.4(KK)中利用APP打开关闭数据流量 前端...

OSC编辑部
2014/12/21
2.6K
1
OSChina 技术周刊第十二期 —— 每周技术抢先看

每周技术抢先看,总有你想要的! 移动开发 【博客】Android仿微信录音功能,自定义控件的设计技巧【OSC 新客户端部分功能解说哦】 前端开发 【翻译】AngularJS – 如何处理 XSS 漏洞【我就是...

OSC编辑部
2014/12/07
2.7K
3
linux`操作文本的三大利器

、、是操作文本的三大利器,也是必须掌握的命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属功能最强大,但也最复杂。更适合单纯的查找或匹配文本,更适合编辑匹配到的文本,更适...

丁典
2018/07/30
0
0
awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一

、、是操作文本的三大利器,也是必须掌握的命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属功能最强大,但也最复杂。更适合单纯的查找或匹配文本,更适合编辑匹配到的文本,更适...

[流苏]
2018/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dubbo常用功能总结

准备工作: (1)启动zookeeper作为dubbo的注册中心 (2)新建一个maven的生产者web工程dubbo-provider-web和一个maven的消费者web工程dubbo-consumer-web (3)在pom.xml文件里面引入如下依...

呵呵哒灬
12分钟前
0
0
数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
13
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
4
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
1
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部