一.文件处理命令
(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
二.正则表达式
正则表达式是一种用来匹配、搜索和替换文本的强大工具。它可以描述字符串的模式,并且可以根据模式来执行各种操作,如搜索、替换、提取等。
正则表达式是由普通字符和元字符组成
- 普通字符包括大小写字母、数字、标点符号及一些其他符号
- 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式,元字符分为普通元字符和扩展元字符
基础元字符
\ #转义字符,将一些特殊符号转义成普通字符 \? \! \\
将一些普遍字母字符转义成特殊字符 \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次