对于linux来讲,文本处理是非常重要的,因为linux系统就是由无数的文件组成的,linux中一切皆文件。文件的处理方式有很多种,所以就有众多的文本处理工具,各自作用于不同的文本处理方式。
一、查看文件命令:
cat命令:处理显示文件内容,不改变原文件
cat命令常用于查看文件内容,也可通过不同的选项实现不同的显示效果,只执行cat命令是会提供给用户一个交互式的界面,输入什么内容就显示什么内容。
格式:cat [选项] …文件…
常用选项:
-n:在显示的内容前加上行号
-A:显示所有的控制符
-E:显示行结束符$
-b:非空行编号
-s:压缩连续的空行为一行
示例:
[root@host ~]# cat f1
abcd
aabbccdd
[root@host ~]# cat -n f1
1 abcd
2 aabbccdd
3
[root@host ~]# cat -A f1
abcd $
aabbccdd$
$
[root@host ~]# cat -E f1
abcd $
aabbccdd$
$
[root@host ~]# cat -b f1
1 abcd
2 aabbccdd
二、分页查看文件命令:
more命令:分页查看文件内容,在查看文件时,用时候会遇到文件特别大,一屏根本显示不完,这时我们就用到了分页查看工具,可以方便的把文件进行分页,从而方便查看
格式: more [选项…] 文件..
常用选项:
-d:屏幕下方显示提示信息
用法:使用回车键向下翻一行,使用空格键向下翻一屏
截图:
less命令:一页页地查看文件内容标准输出,提供了比more更为强大的功能
查看使用的命令有:
可以向上和向下查看,也可进行搜索,
PgUp:向上翻一屏
PgDn:向下翻一屏
回车键、下箭头:向下翻一行
上箭头:向上翻一行
搜索功能
也可插入 / 或 ?在其后输入要查找的内容
/从光标向下搜索
?从光标处向上搜索
可结合n/N跳到下一个或上一个匹配的项
三、显示文件前几行、后几行的内容的命令
head命令:显示文件的前几行内容(默认显示前十行)
格式:head [选项].. 文件..
常用选项;
-c #:指定获取前#个字节
-n #:指定获取钱#行
-#:指定行数
示例:
[root@host ~]# head -c 100 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nol[root@host ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@host ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@host ~]#
tail命令:显示文件后几行的内容(默认为后十行)
格式: tail [选项]…文件…
常用选项:
-c #:指定后获取#个字节
-n #:指定获取后#行
-#:指定后#行
-f:跟踪显示文件新添内容的变化,多用于监控日志
用法与head命令相同
四、按列抽取文本命令与合并文本命令
cut命令:按列抽取文件内容
格式:cut [选项]…文件…
常用选项:
-d 分隔符:指明分隔符,默认为tab
-f 数字:
#:指定第#个字段
#,#[#]:离散的多个字段,例如1,3,5
#-#:连续的字段 例如1-4
混合使用:1-3,5
-c:按字符分割
–output-delimiter=STRING 指定输出分割符
示例:
[root@host ~]# cut -d: -f1,3-5 /etc/passwd
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
[root@host ~]# cut -c1-10 /etc/passwd
root:x:0:0
bin:x:1:1:
daemon:x:2
adm:x:3:4:
[root@host ~]# cut -d: -f1,2 –output-delimiter=# /etc/passwd
root#x
bin#x
daemon#x
adm#x
paste命令:合并两个文件同行号的列到一行
格式: paste [选项]…文[件]…
常用选项:
-d 分隔符:指定分隔符,默认为tab
-s:所用行合并成一行显示
示例:
[root@host ~]# cat f1 f2
abcd
auuuuy
00000000000
abcd
auuuuy
00000000000
[root@host ~]# paste f1 f2
abcd abcd
auuuuy auuuuy
00000000000 00000000000
[root@host ~]# paste -s f1 f2
abcd auuuuy 00000000000
abcd auuuuy 00000000000
五、分析文本工具:
wc命令:收集文本统计数据,能够统计出文件的单词数、行数、字符数、字节数,作用对象可以是文本也可以是标准输出,常与管道结合使用。
格式:wc [选项]
默认不加选项将输出行数、单词数、字符数
选项;
-l:统计行数
-c:统计字节数
-w:统计单词数
-m:统计字符数(当统计汉字时与-c选项有区别)
示例:
[root@host ~]# cat /etc/passwd | wc
47 91 2448
[root@host ~]# cat /etc/passwd | wc -l
47
[root@host ~]# cat /etc/passwd | wc -c
2448
[root@host ~]# cat /etc/passwd | wc -w
91
sort命令:文本排序命令,把处理过的内容显示出来,不会改变源文件内容
格式: sort [选项] 文件
常用选项:
-r:反向排序(由上至下)
-n:按数字大小排序
-f:忽略字符大小写
-u:删除输出中重复的行
-t 分隔符:指定分割符
-k 数字段:按照-t指定的分隔符确定以哪一列进行排序
示例:
[root@host ~]# cat f1
123
23
45
4
[root@host ~]# sort f1
123
23
4
45
[root@host ~]# sort -n f1
4
23
45
123
[root@host ~]# sort -nr f1
123
45
23
4
[root@host ~]# sort -t: -k 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhang:x:1000:1000:zhang:/home/zhang:/bin/bash
bash:x:1001:1001::/home/bash:/bin/bash
basher:x:1002:1002::/home/basher:/bin/bash
uniq命令:从输入中删除重复的行(连续的且完全相同的为重复)
格式: uniq [选项]…[文件]…
选项:
-c:显示重复的行的次数
-d:仅显示重复的行
-u:仅显示不重复的行
示例:
[root@host ~]# cat f1
45
23
45
45
[root@host ~]# uniq -c f1
1 45
1 23
2 45
[root@host ~]# uniq -d f1
45
[root@host ~]# uniq -u f1
45
23
diff命令:diff命令用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。diff程序的输出被称为补丁 ,因为Linux系统中还有一个patch程序,可以根据diff的输出将误删除的diff格式的其中一个文件恢复回来,不过用于恢复的文件会飞改名。
格式: diff [选项] 文件1 文件2…
选项:
-u:在恢复diff格式文件时选用
patch命令:复制在其他文件中进行的改变
选项:
-b:自动备份改变了的文件
示例:
[root@host ~]# cat f1 f2
auuuuy
00000000000
abcd
auuuuy
00000000000
[root@host ~]# diff f1 f2
0a1
> abcd
1a3
>
[root@host ~]# diff -u f1 f2 > f.log
[root@host ~]# rm -f f1
[root@host ~]# patch -b f2 f.log
patching file f2
Reversed (or previously applied) patch detected! Assume -R? [n] y
[root@host ~]# ls
anaconda-ks.cfg Documents f2 f.log Pictures Templates wc
Desktop Downloads f2.orig Music Public Videos
[root@host ~]# cat f2 f2.orig
auuuuy
00000000000
abcd
auuuuy
00000000000
原创文章,作者:ZJM,如若转载,请注明出处:http://www.178linux.com/30079