Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

有点拖了,没有好好整理之前的内容,拖延症害死人…..Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

这次介绍一些有趣的小文本处理工具,可以方便截取文本内容、排序、备份之类的。

head

用法:head [选项]… [文件]…

head[OPTION]…[FILE]…

默认将每个指定文件的头10行显示到标准输出。如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。如果不指定文件,或者文件为“-“,则从标准输入读取数据

-c  –bytes=[-]k 显示每个文件的前k字节内容;如果附加“-“参数,则除了每个文件的最后K字节数据外显示剩余全部内容

-n  –lines=[-]k 显示每个文件的前k行内容;如果附加“-“参数,则除了每个文件的最后K 行外显示剩余全部内容

-q  –quiet–silent 不显示包含给定文件名的文件头

-v  –verbose 总是显示包含给定文件名的文件头

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)


tail

tail[OPTION]…[FILE]…

tail – 输出文件的末尾部分,默认在标准输出上显示每个文件的最后10行,如果多于一个文件会在每一段输出前会给出文件名作为文件头,一个接一个地显示。如果不指定文件,或者文件为“-“,则从标准输入读取数据。

-c  –bytes=N 输出最后N个字节

-n  –lines=N 输出最后N行而非默认的最后10

-q  –quiet –silent 从不输出给出文件名的首部

-v  –verbose 总是输出给出文件名的首部

-f  –follow[={name|descriptor}] 当文件增长时输出后续添加的数据,动态显示。跟踪显示文件新追加的内容常用日志监控。

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

拓展:与head相似,如果N(字节或者行数)的第一个字符为`+’,那么从每个文件的开头算起的第N项开始显示,否则,显示该文件的最后N项。

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)


cut

按列抽取文本

cut[OPTION]…[FILE]…

-d –DELIMITER:指明分隔符,默认为Tab,一般与-f 连用。

-f 选取第几列

指定某一列

n-m  指定n列到m

n,n-m  混合指定

–output-delimiter 指定输出符

示例:截取用户名与UID且以“+”符号为分隔符。

cut -d: -f1,3 –output-delimiter=’+’ /etc/passwd

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

-c  [n-m]按字符切割 第n个字符到第m个字符

-b  [n-m]按字节切割 第n个字节到第m个字节

示例:截取/etc/passwd文件的前四个字符。

cut -c 1-4 /etc/passwd

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

经典练习题:显示当前主机第一个网卡的IP地址

ifconfig |head -n 2| tail -n 1| tr -s ‘ ‘ : |cut -d: -f4


paste

将每个指定文件里的每一行整合到对应一行里写到标准输出,默认用制表符分隔。如果没有指定文件,或指定文件为”-“,程序将从标准输入读取数据。

paste[OPTION]…[FILE]…

-d分隔符:指定分隔符,默认用TAB

-s: 不使用平行的行目输出模式,而是每个文件占用一行

paste f1 f2

paste -s f1 f2

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)


wc

收集文本统计数据

wc命令的功能为统计指定文件中的字节数、单词数、行数并将统计结果显示输出

可以对文件或STDIN中的数据运行

-c  –bytes 打印字节数
-m  –chars
打印字符数
-l  –lines
打印行数
-L  –max-line-length
打印最长行的长度
-w  –words
打印单词数

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)


sort

文本排序

把整理过的文本显示在STDOUT,不改变原始文件

sort [options] file

常用选项

sort

 -r 执行反方向(由上至下)整理

   -n 执行按数字大小整理

   -f 选项忽略(fold)字符串中的字符大小写

   -u 选项(独特,unique)删除输出中的重复行

   -t c 选项使用c做为字段界定符

   -k X 选项按照使用c字符分隔的X列来整理能够使用多次

示例:

cat /etc/passwd | sort

#排序默认以第一个数据排序,默认以字符串形式排序,以a开始升序排序,首字母相同则比较下一位的顺序。

cat /etc/passwd | sort -t: -k3

#/etc/passwd中的以“:”为间隔符,对其第三栏排序,默认以第一数据排序,相同的话比较下一位的顺序。

cat /etc/passwd | sort -nt: -k3

#/etc/passwd中的以“:”为间隔符,对其第三栏排序,按数字整体大小升序排列。

cat /etc/passwd | sort -rnt: -k3

#/etc/passwd中的以“:”为间隔符,对其第三栏排序,按数字整体大小以升序相反的方式降序排列。


uniq

uniq命令:从输入文件或者标准输入中删除前后相接的重复的行,注意:连续且完全相同方为重复

uniq[OPTION]…[FILE]…

-c  –count 显示每行重复出现的次数

-d  –repeated 仅显示重复过的行

-D  –all-repeated[=delimit-method 显示所有重复的行

-u  –unique 仅显示不曾重复的行

-f  –skip-fields=N   比较时跳过前N

-s, –skip-chars=N    比较时跳过前N 个字符

-I  –ignore-case     在比较的时候不区分大小写

-w  –check-chars=N   对每行第N 个字符以后的内容不作对照

常和sort命令一起配合使用:

sort test | uniq –c

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)


接下来介绍比较实用的功能,需要diff与patch功能结合使用。

diff

比较两个文件之间的区别

命令:diff

patch

让用户利用设置修补文件的方式,修改,更新原始文件。

命令:patch

上面两条命令相结合可以做出大事——“打补丁”或“更新”

diff命令的输出被保存在一种叫做“补丁”的文件中

使用-u选项来输出“统一的(unified)”diff格式文

件,最适用于补丁文件。

patch复制在其它文件中进行的改变(注意:要谨慎使用)

适用-b选项来自动备份改变了的文件

示例:

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

换个角度,你也可以理解为对文件进行更新。同时,不要担心旧版文件的丢失,每次更新都会产生后缀为“.orig”的文件,里面存储着你的旧版文件。

Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

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

(0)
上一篇 2017-07-31 23:43
下一篇 2017-08-02 11:01

相关推荐

  • Linux的SOCKET编程详解

    1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal) UNIX system V有:消息(message)、共享存储区…

    Linux干货 2015-04-10
  • 常用的shell命令

    硬件: 1.cpu相关 lscpu:查看cpu的统计信息 cat /proc/cpuinfo :查看cpu详细信息,如每个cpu的型号 2.内存相关 free -m:概要查看内存情况,这里的单位是MB cat  /etc/meminfo   :查看内存详细信息 3.磁盘相关: l…

    Linux干货 2016-08-22
  • linux 学习笔记

    第一周

    Linux干货 2018-03-16
  • Python from entry to abandon 4

        python from entry to abandon系列的收官之作    本篇博客将会介绍《简明Python教程》的最后四章内容。并在最后附上对于本书的个人评价和下阶段自学Python系列博客更新的计划。    13.异常   &nbsp…

    Linux干货 2017-04-07
  • linux 系统启动流程

    假设以个人架设的linux主机为例:当你按下电源键之后,计算机硬件会主动读取BIOS来加载硬件信息及进行硬件系统的自我测试,之后系统会主动读取系统第一个可启动的设备,此时就可以读入引导装载程序了。 引导程序可以指定使用哪个内核文件来启动,并实际加载内核到内存中解压缩与执行,此时内核就能够开始在内存内活动,并检测所有硬件信息,与加载适当的驱动程序来使这部主机开…

    Linux干货 2016-09-12
  • 计算机的组成部分

    运算器:负责数据的运算和逻辑运算。 存储器:实现记忆功能的部件用来存放计算程序及参与运算的各种数据。 控制器:负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问。 输入设备:实现计算程序和原始数据的输入。 输出设备:实现计算结果输出。

    Linux干货 2017-08-19