有点拖了,没有好好整理之前的内容,拖延症害死人…..
这次介绍一些有趣的小文本处理工具,可以方便截取文本内容、排序、备份之类的。
head
用法:head [选项]… [文件]…
head[OPTION]…[FILE]…
默认将每个指定文件的头10行显示到标准输出。如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。如果不指定文件,或者文件为“-“,则从标准输入读取数据
-c –bytes=[-]k 显示每个文件的前k字节内容;如果附加“-“参数,则除了每个文件的最后K字节数据外显示剩余全部内容
-n –lines=[-]k 显示每个文件的前k行内容;如果附加“-“参数,则除了每个文件的最后K 行外显示剩余全部内容
-q –quiet,–silent 不显示包含给定文件名的文件头
-v –verbose 总是显示包含给定文件名的文件头
tail
tail[OPTION]…[FILE]…
tail – 输出文件的末尾部分,默认在标准输出上显示每个文件的最后10行,如果多于一个文件会在每一段输出前会给出文件名作为文件头,一个接一个地显示。如果不指定文件,或者文件为“-“,则从标准输入读取数据。
-c –bytes=N 输出最后N个字节
-n –lines=N 输出最后N行而非默认的最后10行
-q –quiet –silent 从不输出给出文件名的首部
-v –verbose 总是输出给出文件名的首部
-f –follow[={name|descriptor}] 当文件增长时输出后续添加的数据,动态显示。跟踪显示文件新追加的内容常用日志监控。
拓展:与head相似,如果N(字节或者行数)的第一个字符为`+’,那么从每个文件的开头算起的第N项开始显示,否则,显示该文件的最后N项。
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
-c [n-m]按字符切割 第n个字符到第m个字符
-b [n-m]按字节切割 第n个字节到第m个字节
示例:截取/etc/passwd文件的前四个字符。
cut -c 1-4 /etc/passwd
经典练习题:显示当前主机第一个网卡的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
wc
收集文本统计数据
wc命令的功能为统计指定文件中的字节数、单词数、行数并将统计结果显示输出
可以对文件或STDIN中的数据运行
-c –bytes 打印字节数
-m –chars 打印字符数
-l –lines 打印行数
-L –max-line-length 打印最长行的长度
-w –words 打印单词数
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
接下来介绍比较实用的功能,需要diff与patch功能结合使用。
diff
比较两个文件之间的区别
命令:diff
patch
让用户利用设置修补文件的方式,修改,更新原始文件。
命令:patch
上面两条命令相结合可以做出大事——“打补丁”或“更新”
diff命令的输出被保存在一种叫做“补丁”的文件中
使用-u选项来输出“统一的(unified)”diff格式文
件,最适用于补丁文件。
patch复制在其它文件中进行的改变(注意:要谨慎使用)
适用-b选项来自动备份改变了的文件
示例:
换个角度,你也可以理解为对文件进行更新。同时,不要担心旧版文件的丢失,每次更新都会产生后缀为“.orig”的文件,里面存储着你的旧版文件。
原创文章,作者:Mozart,如若转载,请注明出处:http://www.178linux.com/83083