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  指定某一列

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)
MozartMozart
上一篇 2017-07-31 23:43
下一篇 2017-08-02 11:01

相关推荐

  • 运维练习题

     1、简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。TCP三次握手:客户端向服务器发送SYN包,客户端进入syn_SEND状态服务端收到客户端的发送的包返回ACK+SYN包,服务器端进入SYN_RECV状态客户端收到服务器端返回的包再发ACK包,客户端进入ESTABLISHED状态,服务器收到包也进入ESTABLISHED状态客户…

    Linux干货 2016-06-12
  • 简述计算机硬件组成,linux系统及简单命令详解

    1、计算机的硬件组成 (1)cpu(中央处理器):主要由运算器和控制器组成,它的运算器主要负责程序运算与逻辑判断,控制器则主要协调组件与各个设备之间工作。 (2)存储设备:存储设备又分为外存储设备,是用来存储数据信息的设备,它包括,硬盘,u盘,光盘,软盘。而其中内存(ram)和主板上的rom是属于内存储设备,内存是只读存储器,它用来暂时记录数据信息供给cpu…

    2017-07-09
  • N25-第四周作业

    第四周 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@zf ~]# cp -r /etc/skel/ /home/tuser1 [root@zf ~]# chmod -R&nbs…

    Linux干货 2016-12-21
  • 搭建yum仓库的FTP服务器

    搭建centos7ftp服务

    2017-12-02
  • 关于 文本处理工具、正则表达式、grep 的简单举例

                              文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat […

    系统运维 2016-08-08
  • Linux内核编译以及自制Linux系统

    内核编译 单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。   内核组成部分: kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE; kernel object: 内核对象,一般放置于/lib/modules/VERSION-RELEASE/ [ ]:…

    2016-09-21