文件处理命令和正则表达式

一.文件处理命令

(1)sort 命令——对文件内容进行排序

格式

  • sort [选项] 文件
  • 命令 | sort [选项] 

选项

-n                                          #按照数字顺序对文件内容进行排序

-r                                           #进行反向排序

-u                                          #排序后去重

-t  '分隔符'  -k  字段序号        # -t 根据指定的分隔符从第指定的字段序号的字段进行排序

(2)uniq 命令——对连续重复的内容进行去重

格式

  • uniq [选项] 文件
  • 命令 | uniq [选项] 

选项

-c              # 对连续的行进行去重,并输出重复行的次数

-d              #只输出连续重复的行

-u              #只输出不连续重复的行

(3)tr 命令——对输入的内容进行替换

格式

tr [选项] 参数

命令  |  tr  '参数1' ['参数2'] 

选项

-t           #将参数1的字符替换为参数2

-c          #只保留参数1 的字符,其他字符包括\n都替换成参数2

-s          #根据参数1的字符进行查重,如果有参数2,则将参数2的字符替换成参数1的字符

-d          #删除所有参数1的字符

(4)cut 命令——对文件内容进行字段截取

格式

命令  |  cut  [选项]  参数

选项

-d  '分隔符'                          #截取含有指定的分隔符的字段

-f  字段序号                         #截取含有指定的字段序号的字段

-d '分隔符' -f 字段序号        #根据 -d 指定的分隔符显示 -f 指定的字段序号的字段

--complement                     #表示取反,用在-f后面表示不显示 -f 指定的字段
--output-delimiter '分隔符'   #指定输出的字段分隔符

(5)split 命令——按照格式拆分文件

格式

split  [选项]  文件

选项

-l      #根据行数分割文件

-b     #根据大小分割文件

-d     #输出的文件后缀使用数字替代

重点

如何将一个大文件根据指定大小分割成n个小文件

split  -b  指定大小 大文件  目标文件

如何将一个大文件根据指定行数分割成n个小文件

split  -l  指定行数  大文件  目标文件

(6)paste 命令——合并文件的列

格式

paste  [选项]  文件1  文件2

选项

-d '分隔符'     #指定输出的字段分隔符
-s                  #将每列横向输出

(7)eval 命令——在命令行执行前,先将命令行里的变量置换成对应的值后,再执行命令

举例说明

a=99

b=a

eval echo \$$b     #先将$b置换成echo $a,再执行echo $a,执行结果为99

eval $b=55          #先将$b置换成$a,执行结果为a=55

二.正则表达式

正则表达式是一种用来匹配、搜索和替换文本的强大工具。它可以描述字符串的模式,并且可以根据模式来执行各种操作,如搜索、替换、提取等。

正则表达式是由普通字符和元字符组成

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

基础元字符

\             #转义字符,将一些特殊符号转义成普通字符 \? \! \\  

                                  将一些普遍字母字符转义成特殊字符 \n \t \r
^            #匹配以指定字符串开头的位置  ^XXX
$            #匹配以指定字符串结尾的位置  XXX$     

^$          #表示匹配空行
.             #表示除了 \n 以外的任意字符
[XXX]     #匹配中括号里的列表中的任意一个字符   [.\n]  匹配任意的任意字符

                                                                                [0-9]  匹配数字

                                                                                [a-zA-Z0-9] 匹配所有大小写字母和数字
[^XXX]   #匹配除了中括号里的列表中的任何字符   [^0-9] 匹配所有非数字的字符  

                                                                                [^a-zA-Z] 匹配所有非大小字母的字符
*             #匹配*前面的字符或表达式任意次数(包括0次 1次或多次)

                                                                              .*  匹配除\n之外的任意长度的任意字符 

                                                                              [0-9]* 匹配任意长度的数字
{n}          #匹配{}前面的字符或表达式 n 次
{n,}         #匹配{}前面的字符或表达式至少 n 次(>=n 次)
{n,m}      #匹配{}前面的字符或表达式 n 到 m 次(>=n次 且 <=m次)

注意:grep  sed 使用时 {} 前面要加 \,如 \{ \} ;

          egep     awk     grep -E     sed -r 使用时 {} 前面不用加 \

扩展元字符

+      #匹配+前面的字符或表达式至少1次(>=1次   相当于{1,})
?      #匹配?前面的字符或表达式0次或1次(相当于{0,1})
()     #将()里的表达式作为一个整体    (oo)*   匹配任意次数的oo   

                                                           (oo)?  匹配oo一次或0次(匹配有没有oo)
|      #表示或       (oo|aa)   匹配oo或者aa

                           (oo|aa)? 匹配匹配 oo一次或0次 或者 aa一次或0次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值