目录
一、grep 行过滤
二、cut 列截取
三、sort 排序
四、uniq 去重
五、tee 读取标准输入
六、diff 比较文件差异
七、paste 合并
八、tr 字符转换
8.1 替换
8.2 删除
8.3 压缩
九、总结
本篇汇总了Linux中的文本处理工具,也是shell脚本编程中经常要用到的工具,有些工具例如grep绝对是要重点掌握的,而有些工具例如paste个人觉得很鸡肋
一、grep 行过滤
grep是行过滤工具,根据关键字进行行过滤,这个命令可以结合正则表达式使用
常见选项:
OPTIONS: -i: 不区分大小写 -v: 查找不包含指定内容的行,反向选择 -w: 按单词搜索 -o: 打印匹配关键字 -c: 统计匹配到的行数 -n: 显示行号 -r: 逐层遍历目录查找 -A: 显示匹配行及后面多少行 -B: 显示匹配行及前面多少行 -C: 显示匹配行前后多少行 -l:只列出匹配的文件名 -L:列出不匹配的文件名 -e: 使用正则匹配 -E:使用扩展正则匹配 ^key:以关键字开头 key$:以关键字结尾 ^$:匹配空行 --color=auto :可以将找到的关键词部分加上颜色的显示
二、cut 列截取
cut命令有两个主要的功能,第一是显示文件内容,第二是连接多个文件
若不指定file参数,该命令将读取标准输入。 必须指定 -b、-c 或 -f 标志之一
常用参数:
-b | 以字节为单位进行分割 ,仅显示行中指定直接范围的内容 |
-c | 以字符为单位进行分割 , 仅显示行中指定范围的字符 |
-d | 自定义分隔符,默认为制表符”TAB” |
-f | 显示指定字段的内容 , 与-d一起使用 |
-n | 取消分割多字节字符 |
#截取用户名passwd文件中的用户名 [root@localhost data]# cut -d: -f1 passwd root bin daemon adm lp sync #仅显示部分 #显示passwd前十个字符 [root@localhost data]# cut -c1-10 passwd root:x:0:0 bin:x:1:1: daemon:x:2 adm:x:3:4: lp:x:4:7:l sync:x:5:0 shutdown:x halt:x:7:0 mail:x:8:1 operator:x #仅显示部分 #截取passwd文件第十个到最后的字符 [root@localhost data]# cut -c10- passwd 0:root:/root:/bin/bash :bin:/bin:/sbin/nologin 2:2:daemon:/sbin:/sbin/nologin :adm:/var/adm:/sbin/nologin lp:/var/spool/lpd:/sbin/nologin 0:sync:/sbin:/bin/sync x:6:0:shutdown:/sbin:/sbin/shutdown 0:halt:/sbin:/sbin/halt #仅显示部分
#列出当前系统的运行级别 *********************** 如何查看系统运行级别 命令:runlevel 文件:/etc/inittab *********************** [root@localhost data]# runlevel N 5 [root@localhost data]# runlevel |cut -c3 5 [root@localhost data]# runlevel |cut -d ' ' -f2 5
三、sort 排序
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出
sort命令既可以从特定的文件,也可以从stdin中获取输入
sort命令将文件的每一行作为一个单位,从首字符向后,依次按ASCll码值进行比较,最后升序输出
常用参数:
-u :去除重复行 -r :降序排列,默认是升序 -o : 将排序结果输出到文件中,类似重定向符号> -n :以数字排序,默认是按字符排序 -t :分隔符 -k :第N列 -b :忽略前导空格。 -R :随机排序,每次运行的结果均不同
#将passwd文件的前十行导出,安装第三列数字的升序排序 [root@localhost data]# head passwd > 1.txt [root@localhost data]# cat -n 1.txt 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 operator:x:11:0:operator:/root:/sbin/nologin [root@localhost data]# sort -n -t: -k3 1.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [root@localhost data]#
四、uniq 去重
该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行。去除了重复的,保留的都是唯一的
sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行
常用参数:
-i | 忽略大小写 |
-c | 打印每行在文本中重复出现的次数 |
-d | 只显示有重复的纪录,每个重复纪录只出现一次 |
-u | 只显示没有重复的纪录 |
[root@localhost data]# cat 3.txt test 30 test 30 test 30 Hello 95 Hello 95 Hello 95 Hello 95 Linux 85 Linux 85 #查看时删除文件中连续重复的行 [root@localhost data]# uniq 3.txt test 30 Hello 95 Linux 85 #打印重复的次数 [root@localhost data]# uniq -c 3.txt 3 test 30 4 Hello 95 2 Linux 85 #只显示没有重复的记录 [root@localhost data]# uniq -u 3.txt [root@localhost data]#