[toc]
一、文本处理工具
1.grep行过滤工具
语法:
`grep '关键字' filename
options:
-i #不区分大小写
-v #取反
-w #按单词搜索
-o #打印匹配关键字
-c #统计匹配到的行数
-n #显示原行号
-r #层级遍历目录查找
-A #显示匹配行及后面多少行
-B #显示匹配行及前面多少行
-C #显示匹配行前后多少行
-l #只列出匹配的文件名
-L #列出不匹配的文件名
-e #使用正则匹配
-E #使用扩展正则匹配
^ #以关键字开头
$ #以关键字结尾
^$ #匹配空行
--color=auto #关键字加上颜色
别名设置颜色显示
#临时设置
alias grep='grep --color=auto'
#永久设置
#全局:
vim /etc/bashrc
alias grep='grep --color=auto'
#source /etc/bashrc
#局部:
vim ~/.bashrc
alias grep='grep --color=auto'
#source ~/.bashrc
2.cut列截取工具
语法:cut <option> filename
options:
-c #以字符为单位进行分割
-d #自定义分隔符,默认为制表符\t
-f #与-d一起使用,指定截取哪个区域
例子:
cut -d: -f1 1.txt #以冒号为分隔符,截取第一列内容
cut -d: -f1,3,5 1.txt #以冒号为分隔符,截取1,3,5列内容
cut -c1-5 1.txt #截取文件中每行的1-5个字符
cut -c5- 1.txt #截取第五个字符后面所有字符
例题:
用cut或grep过滤出当前系统的运行级别"runlevel"
runlevel | cut -d '' -f2
runlevel | cut -d ' ' -f2
grep -v '^#' /etc/inittab |cut -d: -f2
grep "initdefault:$" /etc/inittab|cut -c4
3.sort工具
sort工具用于排列,它将文件的每一行作为一个单位,从首字符向后,依次按ascii码进行比较,最后按升序输出
options:
-u #去除重复行
-r #降序排列
-o #将排列结果输出到文件,类似重定向>
-n #以数字排序,默认是按字符排序
-t #分隔符
-k #第N列
-b #忽略前导空格
-R #随机排序,每次运行的结果均不同
例子:
#按照用户的uid进行升序排列
sort -n -t: -k3 /etc/passwd
#按照用户的uid进行降序排列
sort -rn -t: -k3 /etc/passwd
#按照用户的uid进行降序排列并将结果输出到1.txt中
sort -rn -t: -k3 /etc/passwd -o 1.txt
4.uniq工具-去除连续的重复行
options:
-i #忽略大小写
-c #统计重复行此时
-d #只显示重复行
例子:
uniq -c 1.txt
2 hello world
1 HELLO world
1 hello WORLD
uniq -ci 1.txt
4 hello world
5.tee工具--从标准输入读取并写入标准输出和文件
options:
-a #双向追加重定向
例子:
[test@lfs ~]$ echo hello world|tee 1.txt
hello world
[test@lfs ~]$ cat 1.txt
hello world
[test@lfs ~]$ echo hello world|tee -a 1.txt
hello world
[test@lfs ~]$ cat 1.txt
hello world
hello world
6.diff工具-逐行比较文件的不同
\#diff描述两个文件不同的方式是告诉我们“怎样改变第一个文件之后,与第二个文件匹配”
语法:diff <option> file1 file2
options:
-b #不检查空格
-B #不检查空白行
-i #不检查大小写
-w #忽略所有的空格
--normal #正常格式显示
-c #上下文格式显示
-u #合并格式显示
例子:
\#比较两个普通文件的异同
#文件准备
[test@lfs ~]$ cat file1
hello world
123456
123123
aaa
[test@lfs ~]$ cat file2
HELLO WOLRD
AAA
123123
12345
bbb
(1)正常显示
diff file1 file2
#diff(目的) file1 {如何改变才能和} file2 {匹配}
(2)上下文格式显示
#前两行主要列出需要比较的文件名和文件的时间戳