sort,uniq,wc,tr
sort (选项)(参数) sort是用来排序数据的。
以下面这个文本为例
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # cat a 123 4567 88 abc aaa AAA jk 777 777 |
sort默认以ASCII码表为标准,按字符从左至右的比较,最后从小到大输出
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # cat a 123 4567 88 abc aaa AAA jk 777 777 |
-n:按照数值的大小排序
1 2 3 4 5 6 7 8 9 10 11 | [root@bogon ~] # sort -n a aaa AAA abc jk 88 123 777 777 4567 |
-r:逆序输出
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # sort -nr a 4567 777 777 123 88 jk abc AAA aaa |
-t:指定分隔符,和-k一起使用
-k:选取哪个字段
1 2 3 4 5 6 7 | 实例以 /etc/passwd 为例,以“:”为分隔符,选取第5字段排序 [root@bogon ~] # head -5 /etc/passwd | sort -t: -k5 adm:x:3:4:adm: /var/adm : /sbin/nologin bin:x:1:1:bin: /bin : /sbin/nologin daemon:x:2:2:daemon: /sbin : /sbin/nologin lp:x:4:7:lp: /var/spool/lpd : /sbin/nologin root:x:0:0:root: /root : /bin/bash |
-u:排序后相同的内容只显示一次,行必须紧邻才能算是相同
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # sort -u a 123 4567 777 88 aaa AAA abc jk |
-f:排序时忽略大小写
1 2 3 4 5 6 7 8 9 | [root@bogon ~] # sort -fu a 123 4567 777 88 aaa abc jk |
------------------------------------------------------------------------------------------------------------
uniq (选项)(参数) 相当于 sort -u,同样,相同行必须紧邻才算相同。
-c:显示文件中相同的行重复的次数
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # uniq -c a 1 123 1 4567 1 88 1 abc 1 aaa 1 AAA 1 jk 2 777 1 |
-d只显示文件中相同的行:
1 2 | [root@bogon ~] # uniq -d a 777 |
------------------------------------------------------------------------------------------------------------
wc (选项)(参数) 文本统计命令,可以统计文本的行数,单词数,字符数
默认
1 2 3 | [root@bogon ~] # wc a 10 9 39 a 10行9个单词39个字符,空格也算是字符 |
-l:只显示行数
1 2 | [root@bogon ~] # wc -l a 10 a |
-w:只显示单词数
1 2 | [root@bogon ~] # wc -w a 9 a |
-c或-m:只显示字符数
1 2 3 4 | [root@bogon ~] # wc -c a 39 a [root@bogon ~] # wc -m a 39 a |
-L:显示最长的一行中有多少个字符
1 2 | [root@bogon ~] # wc -L a 5 a |
------------------------------------------------------------------------------------------------------------
tr (选项)(参数): tr可以做字符串转换一类的事情,但是tr需要输入重定向或管道流才能使用
默认情况下可以做替换或者大小写转换等
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # cat a | tr 'a' 'A' 123 4567 88 Abc AAA AAA jk 777 777 |
-c:将没有比配到的字符都变成另一个字符
1 2 | [root@bogon ~] # cat a | tr -c '77' 'x' xxxxxxx7xxxxxxxxxxxxxxxxxxxxxx777x777xx[root@bogon ~] # |
-d:将匹配到的字符都删除
1 2 3 4 5 6 7 8 | [root@bogon ~] # cat a | tr -d '77' 123 456 88 abc aaa AAA jk |
-s:将匹配到的字符,重复的都显示一次
1 2 3 4 5 6 7 8 9 10 | [root@bogon ~] # cat a | tr -s '77' 123 4567 88 abc aaa AAA jk 7 7 |
还可以使用的一些字符集
[:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制CTRL字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能