正则表达式

278 阅读5分钟

sort命令

以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序

比较原则:

从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出

语法格式:

  • sort [选项] 参数
  • cat file | sort 选项

常用选项

  • -f:忽略大小写,默认会大写字母排在前面
  • -b:忽略每行前面的空格
  • -n:按照数字进行排序
  • -r:反向排序
  • -u:等同uniq,表示相同的数据仅显示一行,去重
  • -t:指定字段分隔符,默认使用tab键分隔
  • -k:指定排序字段
  • -o <输出文件>:将排序后的结果转存至指定文件

1. soft -f:忽略大小写,默认会大写字母排在前面

微信截图_20220904204513.png

2. soft -b:忽略每行前面的空格

微信截图_20220904204725.png

3. soft -u:等同uniq,表示相同的数据仅显示一行,去重

微信截图_20220904205011.png

4. -t:指定字段分隔符,默认使用tab键分隔

-k:指定排序字段

微信截图_20220905173038.png

6.-o <输出文件>:将排序后的结果转存至指定文件

微信截图_20220905183257.png

unip命令

用于报告或者忽略文件中连续的重复行,常与sort命令结合使用

语法格式:

unip [选项] 参数

常用选项:

  • -c:进行计数,并删除文件中重复出现的行
  • -d:仅显示连续的重复行
  • -u:仅显示出现一次的行

1.-c:进行计数,并删除文件中重复出现的行

微信截图_20220905184745.png

2.-d:仅显示连续的重复行

微信截图_20220905185223.png

3.-u:仅显示出现一次的行

微信截图_20220905190121.png

tr命令:

常用来对来自标准输入的字符进行替换、压缩和删除

语法格式:

tr [选项] 参数

常用选项:

  • -c:保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
  • -d:删除所有属于字符集1的字符
  • -s:将重复出现的字符串压缩为一个字符,用字符集2替换字符集1
  • -t:字符集2替换字符集1,不加选项结果相同

注:

  • 字符集1:指定要转换或删除的原字符集,当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集,但执行删除操作时,不需要参数“字符集2”
  • 字符集2:指定要转换成的目标字符集

1.不加选项

微信截图_20220905192901.png

2.-c:保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换

微信截图_20220905195120.png

3.-d:删除所有属于字符集1的字符

微信截图_20220905195857.png

4.-s:将重复出现的字符串压缩为一个字符,用字符集2替换字符集1

微信截图_20220905200416.png

5.t:字符集2替换字符集1,不加选项结果相同

微信截图_20220905201513.png

cut命令

显示行中的指定部分,删除文件中指定字段

语法格式:

cut 参数

常用选项:

  • -f:通过指定哪一个字段进行提取,cut命令使用“TAB”作为默认的字段分隔符
  • -d:“TAB”是默认的分隔符,使用此选项可以更改为其他的分隔符

微信截图_20220905210614.png

-f 和 -d分开使用不可以

微信截图_20220905211138.png

split

linux下将一个大文件拆分成若干小文件

语法格式

split + 选项 + 参数+ 原始文件+拆分后文件名前缀

常用选项

  • -l:以行数拆分
  • -b:以大小拆分

微信截图_20220910091702.png

paste

用于合并文件的列

语法格式

paste [-s] [-d<间隔字符>] 文件...

常用选项

  • -d<间隔字符>:用指定的间隔字符取代制表符
  • -s:把多行内容合并为一行进行显示

微信截图_20220910094313.png

微信截图_20220910095532.png

eval

命令字前加上eval时,shell会在执行命令之前扫描它两次。eval命令将首先会先扫描命令行进行所有的置换,然后再执行该命令适用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描。

实例1

微信截图_20220910101918.png

实例2

微信截图_20220910143647.png

正则表达式

通常用于判断语句中,用来检查某一字符是否满足某一格式

正则表达式的组成

由普通的字符和元字符组成

  • 普通字符:包括大小写字母、数字、标点符号、及一些其他字符
  • 元字符:指在正则表达式中具有特殊意义的专用字符,可以用来规定其前字符(位于元字符前面的字节或表达式)在目标对象中的出现模式

常见的元字符(支持工具:grep、egrep、sed、awk)

  • \:转义字符,用于取消特殊符号的含义,例:!、$等
  • ^:匹配字符串开始的位置,例:^#、^[a...z]等
  • $ :匹配字符串结束的位置,例:word、^
  • .:匹配除\n外的任意字符,例:go.d、g..d等
  • * :匹配前面子表达式0次或多次,例:goo* d、go.* d
  • [list]:匹配list列表中的一个字母,例:[0-9]匹配任意一个数字
  • [^list] :匹配任意非list列表中的一个字符,例:[^0-9]、[^a-z]匹配任意一个小写字符
  • \ {n\ }:匹配当前的子表达式n次,例:go\ {2\ }d、‘[0-9]\ {2\ }’匹配两位数字
  • \ {n,\ }:匹配前面的子表达式不少于n次,例:go\ {2,\ }d、‘[0-9]\ {2,\ }’匹配两位及两位以上的数字
  • \ {n,m\ }:匹配前面的子表达式n到m次,例:go\ {2,3}d、‘[0-9]\ {2,3\ }’匹配两位到三位数
  • \ w:匹配包括下划线的任意单词字符
  • \ W:匹配任何非单词字符
  • \ d:匹配一个数字字符
  • \ D:匹配一个非数字字符
  • \ s:空白符
  • \S:非空白符

注意

  • 正则表达式在表示时,需要加单引号或双引号
  • grep和sed在使用大括号表示正则表达式时,需要加转义符\ 表示大括号

扩展

+:匹配前导字符或表达式1次以上,例:go+d,将匹配至少一个o

?:匹配前导字符或表达式0次或1次,例:go?d,将匹配gd或者god

():将括号中的字符串作为一个整体,例:g(oo)+d,将匹配oo整体1次以上

|:以或的方式匹配字符串,例:g(oo|la)d,将匹配good或者glad

常用的正则表达式

微信截图_20220917082504.png

微信截图_20220917082548.png