文本工具
操作系统中,文本的处理这一操作,比如操作一些内容,查看一些内容等等这些东西在linux中都得借助工具来完成对文本的操作。下面来说说对文本处理的工具;
其中:
查看文件内容工具:more、less、cat
文件文本截取:head和tail
按列抽取:cut
按关键字抽取:grep
下面一一介绍一下
查看文件内容工具:
cat :查看文件内容并打印到屏幕上(默认动作)
当然我们可以使用管道或者输出重定向将默认输出机制更改
选项及含义:
-A:查看文件内容中的隐藏字符,如linux中的换行符" $ " [root@localhost testdir]# cat -A cat.txt aaaaaaaa$ bbbbbbbb$ //$为linux中的换行符 -n:显示文件内容时输出到屏幕加行号 [root@localhost testdir]# cat -n cat.txt 1 aaaaaaaa 2 bbbbbbbb //为内容添加行号 -s:连续的空行压缩成一行 [root@localhost testdir]# cat cat.txt aaaaaaaa bbbbbbbb //文件中空行很多 [root@localhost testdir]# cat -s cat.txt aaaaaaaa bbbbbbbb //添加s选项连续的空行则被压缩成一行
cat还有个双胞胎兄弟,那兄弟有点叛逆,cat为正常顺序显示,而他的兄弟则是倒序显示其文件中的内容,那兄弟则是` tac` 命令.可以去尝试一下
more、less分页显示文件内容
查看文件时如果内容过于多而使用cat查看的话会屏幕会一扫而过,more和less则是用来避免这种情况的。但对于more和less则不能对显示出来的文件内容进行更改等操作。
more操作方法
space(空格键):往下翻页
enter(回车键):一行一行往下翻
less:分页查看文件
space(空格键):往下翻页
enter(回车键):一行一行往下翻
/:往下搜索字符串
在查看是直接键入此符号,在输出需要查找的字符,使用n/N进行上下查找
?:往上搜索字符串
在查看是直接键入此符号,在输出需要查找的字符,使用n/N进行上下查找
n:使用/或?查找字符串是向上或向下依次查看
N:使用/或?查找字符串是向上或向下依次查看
more和less的区别:
more只能往下查看,不能回到首行重新查看,内容查看到底部是自动退出
less则能上下翻动和查找字符串 ,退出需按‘ q ’键
文件文本截取:
能对文件中的文本信息指定显示行
head:查看文件内容(截取首行往下的行数),默认不指定行数显示后10行
-n<数字>:指定显示内容的前几行; head -n num(要显示前几行) 文件(也可以不要-n选项,直接head -num 文件,即可) [root@localhost testdir]# head -n 2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost testdir]# head -2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin //两种用法是一个效果 -c<字符数>:指定显示首行的第几个字符; [root@localhost testdir]# head -c 10 /etc/passwd root:x:0:0[root@localhost testdir]# //截取文件中首行的10个字符,这里因为我们截取的前面的内容,而没有换行符产生的效果。
tail:查看文件内容(截取文件倒数的第几行),默认不指定行数显示后10行
用法则和head差不多,只不过是前或后的区别
其中tail -f 选项可以显示文件不退出,等待用户输入内容显示,
tail -n0 -f tail.txt &
//显示tail.txt文件倒数第0行,使用-f选项退出,等待其他用户输入内容到其内,并自动打印添加的内容到屏幕,“ & ”,此为后台执行命令,具体什么原理我也不太懂。
按列截取文件内容
cut:截取文件内容中指定的列的内容
cut [option]… [file]…
-d: 以给定在-d选项后面的字符为分割符从而截取文件内容
直接在-d后输入要用于分割的字符
-f:显示给定在-f选项后的内容
三种使用方式
1.#:直接指定单个字段(如:3则表示为第三段)
2.#-#:指定连续的字段(如:1-3则表示为1到3的字段)
3.#,#: 指定离散的字段(如:1,3,5,则表示分别的1和3和5个字段)
例:
[root@localhost testdir]# cut -d: -f1,3,5 /etc/passwd root:0:root //-d后跟分割符,用于后面指定要截取第几段的参照物 bin:1:bin daemon:2:daemon //显示passwd文件中的以:号为分割的第1段,第3段,第5段 -c:显示给定的数字范围内的字符 [root@localhost testdir]# cut -c 1-10 /etc/passwd root:x:0:0 // 截取passwd文件中第1个字符到第10个字符的内容 bin:x:1:1: --output-delimiter=STRING 将切出来的内容中的分割符更改为指定的分割符 [root@localhost testdir]# cut -d: -f1,3 --output-delimiter=* /etc/passwd root*0 bin*1 //切掉第1和第3字段,其默认的分割符为冒号“*”使用此命令将原默认分割符更改为指定的分割符“ * ”
分析文本工具:
对文件进行分析查看其数据属性变化
文本数据统计: wc
整理文本: sort
比较文件: diff和patch
文本统计工具
wc:word count 单词统计
不加选项统计文件的默认参数信息(行数、单词数、字节、文件名)
wc [option]… [file]…
-l: 统计文本中的行数 [root@localhost testdir]# wc -l less.txt 107 less.txt -w:统计文本中的单词数 [root@localhost testdir]# wc -w less.txt 80 less.txt -c:统计文件字节数 [root@localhost testdir]# wc -c less.txt 255 less.txt -L:统计文件中内容最多的一行包含多少个字符 [root@localhost testdir]# wc -L less.txt 4 less.txt
在命令行中直接输入wc命令,则会在命令中进入编辑默认,在内输入内容之后按 ^d 退出,wc会自动计算其行数、单词数、字节
文本排序工具
sort:文本排序
对文件内容进行排序,而后打印到屏幕
sort [option]… [file]…
-t:指定分割符进行排序,配合其他选项使用
-k:指定用于排序的字段
-n:基于数值大小进行排序而非字符顺序
-r:逆序排序
-f: 忽略字符大小写
-u:连续重复的内容只显示一个
例:1.使用passwd文件的以冒号“ :”分割的第三个字段进行数值排序
[root@localhost testdir]# sort -t: -k 3 -n /etc/passwd root:x:0:0:root:/root:/bin/bash //-t :指定分隔符为冒号“ :” ;-k:指定以第三个字段进行排序;-n:进行数值从小到大排序 bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ............
2.使用passwd文件的以冒号“ :”分割的第三个字段进行数值大小的倒序显示
[root@localhost testdir]# sort -t: -k 3 -nr /etc/passwd //-r 则为倒序显示 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin wang:x:508:508::/home/wang:/bin/bash nologin:x:507:507::/home/nologin:/sbin/nologin testbash:x:506:506::/home/testbash:/sbin/nologin ............
Uniq:唯一,其含义为删除重复
-c:显示文件中重复行的次数
[root@localhost testdir]# uniq -c cat.txt 2 aaaaaaaa 2 bbbbbbbb 1 cccccccc 2 1 dddddddd 2 2 eeeeeeec
-u:仅显示不重复的行
[root@localhost testdir]# uniq -u cat.txt cccccccc dddddddd
-d:仅显示重复的行
[root@localhost testdir]# uniq -d cat.txt aaaaaaaa bbbbbbbb //此处两个空行为隔开的连个重复的空行 eeeeeeec
文件比较
diff:比较两个文件之间的区别
diff命令在最简单的情况下,比较给定的两个文件的不同;diff命令是以逐行的方式,比较文本文件的异同处。
diff [OPTION]… FILES
-u:显示两个文件详细的不同信息
使用diff不加选项直接对比文件将不同之处打印到屏幕
例:1.比较两个文件的不同之处,不加选项
[root@localhost testdir]# diff less.txt less2.txt 2d1 < bbbb //此为两个文件中不同之处的内容
2.比较两个文件显示出详细不同信息
[root@localhost testdir]# diff -u less.txt less2.txt --- less.txt2016-07-26 01:58:11.914942576 +0800 +++ less2.txt2016-07-26 01:57:55.244946816 +0800 @@ -1,2 +1 @@ aaaa -bbbb //此为两个文件不同的详细信息,将第二个文件删此行则相同
patch:向文件打补丁
在比较出来的不同点保存到另一个文件中,如果误删用于比较的其中一个文件,可以用命令恢复误删的文件,用其中一个文件将另一个文件恢复
-b:将打完补丁的文件自动备份,名称默认为原文件的后面加上.orig
两个文件,比较出不同之处之后将信息保存了,然后原用于比较的文件被误删,现用patch命令将其恢复 1.diff -u file1 file2 >file.patch //将文件1和文件2比较出来的详细信息保存到file.patch中 2.rm -f file2 //删除文件2 3.patch -b file1 file.patch //用文件1和比较出来的结果文件进行融合匹配,系统自动保存为file1.orig,此文件内容将和原有内容一样。
原创文章,作者:Lii,如若转载,请注明出处:http://www.178linux.com/29263