Shell中的几个文本处理工具
1.grep工具
grep是行过滤工具,用于根据关键字进行过滤
语法和选项
语法
# grep 选项 '关键字' 文件名
常见选项
OPTIONS:
-i:不区分大小写
-v:查找不包含指定内容的行,反向选择
-w:按单词搜索
-o:打印匹配关键字
-c:统计匹配到的次数
-n:显示行号
-r:逐层遍历目录查找
-A:显示匹配行及后面多少行
-B:显示匹配行及前面多少行
-C:显示匹配行前后多少行
-l:只列出匹配的文件名
-L:列出不匹配的文件名
-e:使用正则匹配
-E:使用扩展正则匹配
^$:匹配空行
2.cut工具
cut是列截取工具,用于列的截取
语法和选项
语法
# cut 选项 文件名
常见选项
OPTIONS:
-c:以字符为单位进行分割、截取
-d:自定义分隔符,默认为制表符\t
-f:于-d一起使用,制定截取那个区域
用法示例
a)截取文件的第一个和第五个字符
# cut -c1,5 文件名
b)截取文件的第一个到第五个字符
# cut -c1-5 文件名
c)截取以":"分割的第一列字符
# cut -d: -f1 文件名
d)截取以":"分割的第一列到第五列
# cut -d: -f1-5 文件名
3.sort工具
sort工具用于排序,它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将它们按升序输出
语法和选项
语法
sort 选项 文件名
常用选项
OPTIONS:
-u:去除重复行
-r:降序排序,默认是升序
-o:将排序结果输出到文件中,类似于重定向符号
-n:以数字排序,默认是按字符排序
-t:分隔符
-k:第N列
-b:忽略前导空格
-R:随机排序,每次运行的结果均不同
4.uniq工具
uniq用于去除连续的重复行
语法和选项
语法
uniq [选项] 文件名
常用选项
OPTIONS:
-i:忽略大小写
-c:统计重复行次数
-d:只显示重复行
5.diff工具
diff用于逐行比较文件的不同
注意:diff描述两个文件不用的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配
语法和选项
语法
diff [选项] 文件1 文件2
常用选项
OPTIONS:
-b:不检查空格
-B:不检查空白行
-i:不检查大小写
-w:忽略所有的空格
--normal:正常格式显示(默认)
-c:上下文格式显示
-u:合并格式显示
6.paste工具
paste用于合并文件的行
语法和选项
语法
# paste [选项] filename1 filename2 ...
常用选项
OPTIONS:
-d:自定义间隔符,默认是tab
-s:串行处理,非并行
7.tr工具
tr用于字符转换、替换和删除,主要用于删除文件中控制字符或进行字符转换
语法和选项
语法
用法1:将命令的执行结果交给tr处理,其中str1用于查询,str2用于转换处理
# commands | tr 'str1' 'str2'
用法2:tr处理的内容可以来自文件,要使用'<'标准输入
# tr 'str1' 'str2' < filename
用法3:匹配str1字符进行操作,如删除操作
# tr options 'str1' < filename
常用选项
OPTIONS:
-d:删除字符串1中所有的输入字符
-s:删除所有重复出现的字符序列,只保留第一个,也就是将重复出现的字符串压缩为一个字符串
常用匹配字符串
字符串 | 含义 | 备注 |
---|---|---|
a-z或[:lower:] | 匹配所有小写字母 | |
A-Z或[:upper:] | 匹配所有大写字母 | |
0-9或[:digit:] | 匹配所有数字 | |
[:alnum:] | 匹配所有字母和数字 | |
[:alpha:] | 匹配所有字母 | |
[:blank:] | 匹配所有水平空白 | |
[:punct:] | 匹配所有标点符号 | |
[:space:] | 匹配所有水平或垂直的空格 | |
[:cntrl:] | 匹配所有控制字符 | \f Ctrl-L 走行换页 \n Ctrl-J 换行 \r Ctrl-M 回车 \t Ctrl-I tab键 |
多的话不说,咱就是开码!