文本处理工具
文件内容:less和 cat,more
文件截取:head和tail
文本内容处理:tr
按列抽取:cut
按关键字抽取:grep
文件查看命令:cat, tac,rev
cat 复制标准输入到当前输出
语法:cat [OPTION]… [FILE]…
选项:
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
cat ,tac,rev 区别
cat是正常读取文件,tac是把文件行号反过来读,行里面的内容保持原样而rev就行号顺序不变,内容包括单词全部反过来
[root@localhost ~]# cat /etc/issue \S Kernel \r on an \m [root@localhost ~]# tac /etc/issue Kernel \r on an \m \S [root@localhost ~]# rev /etc/issue S\ m\ na no r\ lenreK
分页查看文件内容 more less
more: 分页查看文件
语法:more [OPTIONS…] FILE…
-d: 显示翻页及退出提示
less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/文本 搜索 文本
?文本 搜索 文本 向上搜索
n/N 跳到下一个 或 上一个匹配
less 命令是man命令使用的分页器
显示文本前或后行内容
head
语法:head [OPTION]… [FILE]…
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#: 指定行数
tail
语法:tail [OPTION]… [FILE]…
-c #: 指定获取后#字节
-n #: 指定获取后#行
-#:
-f: 跟踪显示文件新追加的内容,常用日志监控
-一般用法[root@localhost ~]# tail -n 0 -f /var/log/messages & [1] 10275 --------------自动追加最后一行日志信息
tr 单个文字转换处理(translate character)
功能说明:转换字符。
语 法:tr [-cdst][第一字符集][第二字符集]
补充说明:tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。(对位转换)
参 数:
-c 取代所有不属于第一字符集的字符。
-d 删除所有属于第一字符集的字符。
-s 把连续重复的字符以单独一个字符表示。
-t 对位替换。
例如、将文件中每个单词(字母)显示在独立的一行,并无空行
[root@localhost ~]# cat file1 adsfasf a fsf fsa afsa asfsa afasfa qfwf aaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaa sss sss sss t: f [root@localhost ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n' adsfasf a fsf fsa afsa asfsa afasfa qfwf aaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaa sss sss sss t f
-t选项是对位替换
[root@localhost ~]# echo asdfg |tr -t 'ad' 'X' Xsdfg [root@localhost ~]# echo asdfgh |tr -t 'asd' 'ASWDF' ASWfgh
注意:
tr替换的话如果第一字符和第二字符数目不相等时,以第二字符为准
[root@localhost ~]# echo asdfg |tr 'asd' 'AS' ASSfg [root@localhost ~]# echo asdfg |tr 'asd' 'ASDF' ASDfg
cut
功能:cut命令用来显示行中的指定部分,删除文件中指定字段。
语法:cut(选项)(参数) 文件
选项 :
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;一般 -f 1,2,3
-n:与“-b”选项连用,不分割多字节字符;
例如:
切出/etc/passwd下的用户名和对应的shell
[root@localhost ~]# cat /etc/passwd | cut -d ':' -f 1,7 root:/bin/bash bin:/sbin/nologin daemon:/sbin/nologin adm:/sbin/nologin
切出/etc/passwd下指定范围的字段
[root@localhost ~]# cat /etc/passwd | cut -c 5-25 :x:0:0:root:/root:/bi x:1:1:bin:/bin:/sbin/
paste 横向合并两个文件同行号的列到一行
语法:paste [OPTION]… [FILE]…
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
paste f1 f2
paste -s f1 f2
分析文本的工具
wc 收集文本统计数据
功能: 计数单词总数、行总数、字节总数和字符总数
用处: 可以对文件或STDIN中的数据运行
$ wc story.txt 39 237 1901 story.txt 行数 字数 字符数
使用 -l 来只计数行数
使用 -w 来只计数单词总数
使用 -c 来只计数字节总数
使用 -m 来只计数字符总数
sort 文本排序
用处: 把整理过的文本显示在STDOUT,不改变原始文件
语法:$ sort [options] file(s)
常用选项:
-r 执行反方向(由上至下)整理
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
–t c 选项使用c做为字段界定符
–k X 选项按照使用c字符分隔的X列来整理能够使用多次
uniq 从输入中删除重复的前后相接的行
语法: uniq [OPTION]… [FILE]…
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
注意:连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c———统计个单词出现的次数统计/etc/passwd里面各种shell相同的用户有多少
[root@localhost ~]# cat /etc/passwd|cut -d: -f 7 |sort | uniq -c 16 /bin/bash 10 /bin/csh 1 /bin/sync 1 /etc/tcsh 1 /sbin/halt 38 /sbin/nologin 1 /sbin/shutdown
diff 比较文件
语法:diff [选项] [文件一] [文件二]
$ diff foo.conf-broken foo.conf-works
5c5
< use_widgets = no
—use_widgets = yes
5c5的意思是: 注明第5行有区别
patch 复制对文件改变(打补丁)
前提:
-
diff 命令的输出被保存在一种叫做“补丁”的文件中
-
使用 -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件。
-
patch 命令复制在其它文件中进行的改变(要谨慎使用!)
** 适用 -b 选项来自动备份改变了的文件
$ diff -u foo.conf-broken foo.conf-works > foo.patch
$ patch -b foo.conf-broken foo.patch**
对文件一还原成文件二的方法:
[root@qzx ~]# diff /tmp/issue1 /tmp/issue2 3a4 > hello --------文件二于文件一 hello [root@qzx ~]# diff -u /tmp/issue1 /tmp/issue2 > diff.txt ----把文件一和文件二中的不同点找出并打包 [root@qzx ~]# patch -b /tmp/issue1 diff.txt patching file /tmp/issue1 ----------让文件一还原成文件二 [root@qzx ~]# cat /tmp/issue1 CentOS release 6.8 (Final) Kernel \r on an \m hello
原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/29886