{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2021-02-13 15:37:49","updateBy":"admin","updateTime":"2025-06-16 20:19:03","remark":null,"id":48,"articleTitle":"Shell（七）文本处理cut、sort、uniq命令","articleUrl":"shell_cut_sort_uniq","articleThumbnail":"https://www.asumimoe.com/imgfiles/20220908/7769fde9ec5445068e41583cb1c71894.jpg","articleFlag":"0","draftStatus":"1","reprintStatement":"1","articleSummary":"shell中常用的简单文本处理工具：cut切割文本，sort对文本进行排序，uniq对文本进行去重","articleContent":"## cut命令\n\ncut命令将行按指定的分隔符分隔成多列，并输出到终端中\n\n### -c选项：按字符进行筛选\n\n输出每行第一个和第四个字符\n\n```bash\n[root@l1 ~]# cut -c 1,4 /etc/passwd\nrt\nb:\ndm\na:\n```\n\n### -f选项：按字段进行筛选，常与-d一起使用\n\n-d选项：指定字段分隔符，不写时默认的字段分隔符为“TAB”，因此只能和-f选项一起使用。\n\n以:为分隔符，输出第一、三列\n\n```bash\n[root@l1 ~]# cut -d : -f 1,3 /etc/passwd #分隔符如果为空格，可以用\"\"括起来\nroot:0\nbin:1\ndaemon:2\nadm:3\n```\n\n### -s选项：文件中含有不包含分隔符的行，可以用-s选项去掉，不在结果中输出\n\n```bash\n[root@l1 ~]# cut -d \" \" -f 1  /etc/passwd\nroot:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\nftp:x:14:50:FTP\n# 加上-s选项后\n[root@l1 ~]# cut -d \" \" -f 1 -s  /etc/passwd\nftp:x:14:50:FTP\n```\n\n## sort命令\n\n文本内容进行排序\n\n```bash\n-n #纯数字排序\n-r #倒序排序\n-o #输出到指定文件中\n-t #指定分隔符\n-u #去掉重复的行，只要指定的字段重复，就认定为重复的行\n-k #按分隔后的结果指定对应列进行排序\n```\n\n安装冒号进行分隔，并以第五列进行排序。\n\n```bash\n[root@l1 ~]# sort -t \":\" -k 5 /etc/passwd\ntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin\navahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin\nbin:x:1:1:bin:/bin:/sbin/nologin\n```\n\n## uniq命令\n\nuniq命令为去除重复的行，重复的行必须相邻才可合并，否则uniq无效。可以先用sort排序后再用uniq去重。\n\n```bash\n-i # 忽略大小写字符的不同\n-c # 将重复的行进行计数并在行首显示\n-u # 只显示没有重复过的行\n```\n\n```bash\n[root@l1 ~]# cut -d \":\" -f 7 /etc/passwd | uniq -c\n      1 /bin/bash\n      4 /sbin/nologin\n      1 /bin/sync\n      1 /sbin/shutdown\n      1 /sbin/halt\n     36 /sbin/nologin\n      1 /bin/bash\n      1 /bin/false\n[root@l1 ~]# cut -d \":\" -f 7 /etc/passwd | sort | uniq -c\n      2 /bin/bash\n      1 /bin/false\n      1 /bin/sync\n      1 /sbin/halt\n     40 /sbin/nologin\n      1 /sbin/shutdown\n[root@l1 ~]# cut -d \":\" -f 7 /etc/passwd | uniq -u\n/bin/bash\n/bin/sync\n/sbin/shutdown\n/sbin/halt\n/bin/bash\n/bin/false\n```","categoryId":5,"viewCount":789,"categoryName":"Shell","author":"球接子","authorAvatar":null,"tagIds":[4,10],"tagNames":["Shell","Linux基础"]}}