linux文本处理工具及正则表达式集锦

2019-09-23 09:09:04于海丽

uniq 命令:从输入中删除重复的前后相接的行

   uniq [OPTION]... [FILE]...

  -c:  显示每行重复出现的次数;

  -d:  仅显示重复过的行;

  -u:  仅显示唯一的行;

  -i:  比较时不区分大小写

[root@bogon ~]# uniq -c ip.txt     ##显示重复行出现的次数,相邻行且完全一样为重复
   3 101.200.78.99
   1 103.41.52.94
   2 106.185.47.161
   1 101.200.78.99
   2 113.240.250.155
   1 13.0.782.215
   1 185.130.5.231

文件比较:

diff命令:比较两个文件之间的区别

  -r  递归比较

  -u  输出“统一的(unified )

  patch 命令复制在其它文件中进行的改变(要谨慎使用!)

  -b   选项来自动备份改变了的文件

[root@bogon ~]# diff file1.txt file2.txt 
8c8      ##表示第8行有区别
< 113.240.250.155
---
> 133.240.250.155

替换和删除字符:

         tr [OPTION]... SET1 [SET2]

                   -c 或——complerment :取字符集的补集

                   -d 或——delete :删除所有属于第一字符集的字符;

                   -s 或—squeeze-repeats :把连续重复的字符以单独一个字符表示

                   -t 或--truncate-set1 :先删除第一字符集较第二字符集多出的字符

[root@bogon ~]# tr -s 'n' < file1.txt     ##删除空行
103.41.52.94
106.185.47.161
S
Kernel r on an m
106.185.47.161
[root@bogon ~]# tr A-Z a-z < file1.txt     ##把大写字母换成小写
103.41.52.94
106.185.47.161
s
kernel r on an m
106.185.47.161

grep命令:过滤文本内容

         grep [OPTIONS] PATTERN [FILE...]

         -i       查找时忽略大小写

         -v     取反

    -n      显示匹配的行号

     -c     统计匹配的行数

    -o     仅显示匹配到的字符串;

    -q    静默模式,不输出任何信息

  -A #   after,  后#行 行

  -B #  before,  前#行 行

  -C #   context,  前后各#行 行

  -e   实现多个选项间的逻辑or 关系