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

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

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

之前看过一篇文章《当我们 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……炫酷无敌,可是…哈哈哈哈哈哈哈。

(本期完)

# SegmentFault 技术周刊 #

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

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

 
标签: Linux命令
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 每天一条linux命令——halt
    halt命令用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法:halt(选项)选项:-d:不要在wtmp中记录;-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i:
    02-10
  • 几个linux命令查看堆栈内存问题 几个linux命令
      公司编写代码,发现整个在程序里面调用system时候总是失败,原因是can't allocate memory ,根本原因不是内存不足,而是堆栈内存不够。使用ulimit -s 2048后有所好转但是发现一旦系统进程开启多了后仍然会挂。后来使用objdump -x 后发现了原因有个动态库
    02-09
  • Linux命令总结--rm命令 linux的rmp命令
    (来源于http://www.cnblogs.com/xqzt/p/5398919.html)1、命令简介rm(Remove file 删除目录或文件)删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变。新手在删除文件之前一定要知道这些:很重要1.可以用mv代替rm的绝对不要用rm,不要着急
    02-09
  • Linux命令行批量创建目录详解 linux创建目录
    以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/myapp里创建src,再创建main,再创建javamkdir -p /opt/app/myapp/src/main/java没想到还可以这样玩##¥%……*(root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp}root@vm1:
    02-09
  • Linux命令之乐--script和scriptplay
    script和scriptplay可以把终端会话记录到一个文件中,可以用来制作命令行教学视屏。 开始录制会话[root@new test]# script -t 2timing.log -a output.sessionScript started, file is output.session[root@new test]# echo hellohello[root@new test]# echo
    02-09
  • java 开发常用的Linux命令
    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所
    02-09
  • 常用Linux命令整理 Linux常用命令总结
    常用Linux命令整理常见系统命令export 查看或修改环境变量# 例:临时修改命令提示符为字符串$export PS1=$# 例:临时修改命令提示符显示系统时间 时间使用\t 表示export PS1="[\u@\h \t \W]\$"man 查看linux系统的手册# 例:查看ls命令如何使用man ls # 回车
    02-09 Linux
  • linux命令行—《命令行快速入门》 linux常用命令csdn
    linux命令行—《命令行快速入门》 linux常用命
    pwd print working directory 打印工作目录hostname my computer's network name 电脑在网络中的名称mkdir make directory 创建路径cd change directory 改变路径ls list directory 列出路径下的内容rmdir remove directory 删除路径pushd push directory 推
    02-09
  • Linux命令(五) 五个常用的linux命令
    Linux命令(五) 五个常用的linux命令
    jenkins触发钉钉报警机制1、安装钉钉插件钉钉报警需要安装Ding Talk插件,支持钉钉报警2、打开钉钉创建钉钉机器人2.1选择机器人类型——自定义2.2添加机器人2.3填写机器人信息填写机器人姓名—设置安全设置为加密类型,并复制出来加密值2.4创建完成保持webhoo
    02-09
  • 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
    03_Linux基础-文件类型-主辅提示符-第1提示符-L
    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/与/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod博客
    02-09
点击排行