文本处理
文本查看命令
抽取文本的工具
- 文件内容:less和cat
- 文件截取:head和tail
- 按列抽取:cut
- 按关键字抽取:grep
文件查看
- 文件查看命令: cat,r tac, rev
- cat [OPTION].…. [FILE]... -E:显示行结束符$ -n:对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s:压缩连续的空行成一行
- tac
- rev
分页查看文件内容
- more:分页查看文件 more [OPTIONS...] FILE... -d:显示翻页及退出提示
- less:一页一页地查看文件或STDIN输出 查看时有用的命令包括: /文本搜索文本 n/N 跳到下一个或上一个匹配
- less 命令是man命令使用的分页器
显示文本前或后行内容
- head [OPTION].….[FILE]... -c #:指定获取前#字节 -n #:指定获取前#行 -#:指定行数
- tail [OPTION].….[FILE]... -c #:指定获取后#字节 -n#:指定获取后#行 -#:同上 -f:跟踪显示文件fd新追加的内容,常用日志监控,相当于--follow=descriptor -F:跟踪文件名,相当于--follow=name --retry
- tailf 类似tail -f,当文件不增长时并不访问文件
文本处理命令
按列抽取文本cut和合并文件paste
- cut OPTION]... [FILE]... -d DELIMITER:指明分隔符,默认tab -f FILEDS: #:第#个字段 #,#[#]:离散的多个字段,例如1,3,6 #-#︰连续的多个字段,例如1-6 混合使用:1-3,7 -c按字符切割 --output-delimiter=STRING指定输出分隔符
- 显示文件或STDIN数据的指定列 cut -d: -f1 /etc/passwd cat /etc/passwd | cut -d: -f7 cut -c2-5 /usr/shar/dict/words
- paste合并两个文件同行号的列到一行 paste [OPTION]... [FILE]... -d分隔符:指定分隔符,默认用TAB -s∶所有行合成一行显示 示例: paste f1 f2 paste -s f1 f2
分析文本的工具
- 文本数据统计:wc
- 整理文本: sort
- 比较文件:diff和patch
收集文本统计数据
- 计数单词总数、行总数、字节总数和字符总数
- 可以对文件或STDIN中的数据运行 wc story.txt 39 237 1901 story.txt 行数 字数 字节数
- 常用选项 -l 只计数行数 -w 只计数单词总数 -c 只计数字节总数 -m 只计数字符总数 -L 显示文件中最长行的长度
文本排序
-
把整理过的文本显示在STDOUT,不改变原始文件 sort [options] file(s)
-
常用选项
-r执行反方向(由上至下)整理 -R随机排序 -n执行按数字大小整理 -f选项忽略(fold)字符串中的字符大小写 -u选项(独特,unique)删除输出中的重复行 -t c 选项使用c做为字段界定符 -k X 选项按照使用c字符分隔的X列来整理能够使用多次
uniq
- uniq命令︰从输入中删除前后相接的重复的行
- uniq [OPTION].…. [FILE]... -C:显示每行重复出现的次数 -d:仅显示重复过的行 -u:仅显示不曾重复的行 注:连续且完全相同方为重复
- 常和sort命令一起配合使用: sort userlist.txt | uniq -c
比较文件
- 比较两个文件之间的区别 diff foo.conf foo2.conf 5c5 use _widgets = yes 注明第5行有区别(改变)
复制对文件改变patch
- diff命令的输出被保存在一种叫做“补丁”的文件中 使用 -u 选项来输出“统一的(unified) " diff格式文件,最适用于补丁文件
- patch 复制在其它文件中进行的改变(要谨慎使用) 适用-b选项来自动备份改变了的文件 dif -u foo.conf foo2.conf > foo.patch patch -b foo.conf foo.patch
Linux文本处理三剑客
- grep:文本过滤(模式: pattern)工具 grep, egrep, fgrep (不支持正则表达式搜索)
- sed: stream editor,文本编辑工具
- awk: Linux上的实现gawk,文本报告生成器
grep
- grep: Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行 模式:由正则表达式字符及文本字符所编写的过滤条件
- grep [OPTIONS] PATTERN[FILE...] grep root /etc/passwd grep "USER"/etc/passwdgrep′USER"/etc/passwd grep 'USER"/etc/passwdgrep′USER'/etc/passwd grep
whoami
/etc/passwd
grep命令选项
--color=auto:对匹配到的文本着色显示 -v:显示不被pattern匹配到的行 -i:忽略字符大小写 -n:显示匹配的行号 -c:统计匹配的行数 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A #: after,后#行 -B #: before,前#行 -C # : context,前后各#行 -e:实现多个选项间的逻辑or关系 grep -e '`'cat' -e 'dog' file -w:匹配整个单词 -E:使用ERE -F:相当于fgrep,不支持正则表达式 -f file:根据模式文件处理