抽取文本的工具:
1.)文件内容:less和cat
2.)文件截取:head和tail
3.)按列抽取:cut
4.)按关键字抽取:grep
查看文件内容:
cat:通过输出显示一个或多个文件
-A 显示所有字符(-vTE)
-s 把多个连续的空行合并成一个空行
-b 给每行输出行号
less:一页一页地查看文件。查看时的命令有:
/文本 搜索文本
n/N 跳到下一个和上一个匹配
v 进入文本编辑器
选项:-m 显示内容占整个文档的比例
-M 显示共有多少行,并显示光标现在是在第几行
-N 显示行号
查看文件的部分截取:
head:显示文件前十行。
-n 改变要显示行的行数
tail:显示文件的最后十行
-n 改变要显示的行数
-f 跟随对文件的后续补充(应用于监控日志文件)
按关键字抽取文本:
grep(支持正则表达式):
grep "^root" /etc/passwd ; cat /etc/passwd | gerp "^root"
-i 不区分大小写地搜索文件
-n 用来显示匹配的行号
-v 用来显示不包含模式的行
-c 只返回匹配模式行的总数
-r 执行递归式文件搜索,从指定目录开始
-AX 显示匹配行的同时,还显示匹配行的后X行
-BX 显示匹配行的同时,还显示匹配行的前X行
-E egrep
-h 不显示文件名
-l 直列数匹配所在文件的文件名,文件名之间用换行符分隔
-s 无声操作,只显示报错信息,一检查退出状态
-o 显示匹配字符串本身,不显示匹配字符串所在的整行
--color= 其后有3个值,说明了被匹配字符的颜色状态
按列抽取文本:
cut:显示文件或输入数据的指定列
-d 用来指定分隔符
-f 制定现实的列
-c 按字符切割
例:ifconfig | grep "inet addr" | cut -d' ' -f1 用来显示此时主机的ip地址
分析文本的工具:
1.)文本数据统计:wc
2.)整理文本:sort
3.)比较文件:diff和path
4.)拼写检查:aspell
收集文本统计数据:
wc:技术单词总字数,行总数,字节总数和字符总数
wc story.txt
39(行数) 237(单词数)1901(字节数)story.txt
-l 只计行数
-w 只计单词总数
-c 只计字节总数
-m 只计字符总数
整理文本:
sort:把整理过的文本显示在输出端(不改变原始文件) sort [选项] 文件
-r 反方向排序
-n 执行时按数字大小整理
-f 忽略字符串中的字符大小写
-u 删除输出的重复行
-t c 选项使用c作为字段的定界符
-k X 选项按照使用c字符分个字段X来整理
-o 制定保存的位置
淘汰重复行:
sort -u 和 uniq
uniq:只要是相连的相同的行就被删除
-u 只出现过一次的行
-d 显示重复的行,单只显示一次
-c 计数每一行重复了多少次
比较文件:
diff:比较两个文件之间的区别
diff file1 file2 以后面的文件为标准修改前面的文件 ">"代表取出 "<"代表加入
复制对文件的改变:
例:diff a.diff b.diff >path.2
patch a.diff <path.2 (打补丁)
patch -R a.diff <path.2 (回到未打补丁的状态)
对文本检查拼写:
aspell:1.)交互式检查文件中的拼写:aspell check /etc/passwd
2.)非交互式地在STDIN中例举拼错的单词:aspell list | /etc/passwd
处理文本的工具:
tr命令:把前面的字符都换位后面的字符并且一一对应;只读取STDIN中的数据
tr 'A-Z' 'a-z' <.bash_profile (该命令会吧中的大写字符都转换成小写字符) 相当于 cat .bash_profile | tr 'A-Z' 'a-z'
1.)流编辑器
2.)在文本流上进行搜索/替换操作
3.)通常不改变源文件(加"-i"选项后改变原文件)
sed的命令格式: sed [options] 'pattern' /path/to/somefiles
a\ 在当前行后添加一行或多行
c\ 用新文本修改当前行中文本
d 删除行
i\ 在当前行之前插入文本
h 把模式空间里的内容复制到缓存缓冲区
H 把模式空间里的内容追加到缓存缓冲区
1 列出非打印字符
p 打印行
n 读入下一输入行,并从下一条命令而不是第一条命令开始对其处理
q 结束或退出sed
r 从文件中读取输入行
! 对所选行以外的所有行应用命令
s 用一个字符串替换另一个
替换标志 g 在行内进行全局替换
p 打印行
w 将行写入文件
x 交换暂存缓冲区和模式空间的内容
y 将字符转换为另一字符
选项 -e 允许多项编辑
-f 制定sed脚本文件名
-n 取消默认的输出