热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux命令sort\uniq\cut\wc

原文地址:http:www.cnblogs.comggjuchengarchive201301132858385.htmlsortsort命令对File参数指定的文

原文地址:

http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html


sort

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。

sort语法

[root@www ~]# sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思



对/etc/passwd 的账号进行排序

[root@www ~]# cat /etc/passwd | sort
adm:x:
3:4:adm:/var/adm:/sbin/nologin
apache:x:
48:48:Apache:/var/www:/sbin/nologin
bin:x:
1:1:bin:/bin:/sbin/nologin
daemon:x:
2:2:daemon:/sbin:/sbin/nologin

sort 是默认以第一个数据来排序,而且默认是以字符串形式来排序,所以由字母 a 开始升序排序。

 

/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何

[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:
0:0:root:/root:/bin/bash
uucp:x:
10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:
11:0:operator:/root:/sbin/nologin
bin:x:
1:1:bin:/bin:/sbin/nologin
games:x:
12:100:games:/usr/games:/sbin/nologin

默认是以字符串来排序的,如果想要使用数字排序:

cat /etc/passwd | sort -t ':' -k 3n
root:x:
0:0:root:/root:/bin/bash
daemon:x:
1:1:daemon:/usr/sbin:/bin/sh
bin:x:
2:2:bin:/bin:/bin/sh

默认是升序排序,如果要倒序排序,如下

cat /etc/passwd | sort -t ':' -k 3nr
nobody:x:
65534:65534:nobody:/nonexistent:/bin/sh
ntp:x:
106:113::/home/ntp:/bin/false
messagebus:x:
105:109::/var/run/dbus:/bin/false
sshd:x:
104:65534::/var/run/sshd:/usr/sbin/nologin

 

如果要对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序。

cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:
13:13:proxy:/bin:/bin/sh
bin:x:
2:2:bin:/bin:/bin/sh
sys:x:
3:3:sys:/dev:/bin/sh

 

查看/etc/passwd有多少个shell:对/etc/passwd的第七个域进行排序,然后去重:

cat /etc/passwd | sort -t':' -k 7 -u
root:x:
0:0:root:/root:/bin/bash
syslog:x:
101:102::/home/syslog:/bin/false
daemon:x:
1:1:daemon:/usr/sbin:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
sshd:x:
104:65534::/var/run/sshd:/usr/sbin/nologin

 

uniq

 uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。

uniq语法

[root@www ~]# uniq [-icu]
选项与参数:
-i :忽略大小写字符的不同;
-c :进行计数
-u :只显示唯一的行

 

testfile的内容如下

cat testfile
hello
world
friend
hello
world
hello


 

直接删除未经排序的文件,将会发现没有任何行被删除

#uniq testfile
hello
world
friend
hello
world
hello


 

排序文件,默认是去重

#cat words | sort |uniq
friend
hello
world

 

排序之后删除了重复行,同时在行首位置输出该行重复的次数

#sort testfile | uniq -c
1 friend
3 hello
2 world

 

仅显示存在重复的行,并在行首显示该行重复的次数

#sort testfile | uniq -dc
3 hello
2 world

 

仅显示不重复的行

sort testfile | uniq -u
friend

 

cut

cut命令可以从一个文本文件或者文本流中提取文本列。

cut语法

[root&#64;www ~]# cut -d&#39;分隔字符&#39; -f fields <&#61;&#61;用于有特定分隔字符
[root&#64;www
~]# cut -c 字符区间 <&#61;&#61;用于排列整齐的信息
选项与参数&#xff1a;
-d &#xff1a;后面接分隔字符。与 -f 一起使用&#xff1b;
-f &#xff1a;依据 -d 的分隔字符将一段信息分割成为数段&#xff0c;用 -f 取出第几段的意思&#xff1b;
-c &#xff1a;以字符 (characters) 的单位取出固定字符区间&#xff1b;

 

PATH 变量如下

[root&#64;www ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
#
1 | 2 | 3 | 4 | 5 | 6 | 7

 

将 PATH 变量取出&#xff0c;我要找出第五个路径。

#echo $PATH | cut -d &#39;:&#39; -f 5
/usr/local/bin

 

将 PATH 变量取出&#xff0c;我要找出第三和第五个路径。

#echo $PATH | cut -d &#39;:&#39; -f 3,5
/sbin:/usr/local/bin

 

将 PATH 变量取出&#xff0c;我要找出第三到最后一个路径。

echo $PATH | cut -d &#39;:&#39; -f 3-

/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games

 

将 PATH 变量取出&#xff0c;我要找出第一到第三个路径。

#echo $PATH | cut -d &#39;:&#39; -f 1-3

/bin:/usr/bin:/sbin:

 

 

将 PATH 变量取出&#xff0c;我要找出第一到第三&#xff0c;还有第五个路径。

echo $PATH | cut -d &#39;:&#39; -f 1-3,5

/bin:/usr/bin:/sbin:/usr/local/bin

 

实用例子:只显示/etc/passwd的用户和shell

#cat /etc/passwd | cut -d &#39;:&#39; -f 1,7
root:
/bin/bash
daemon:
/bin/sh
bin:
/bin/sh

 

 wc

统计文件里面有多少单词&#xff0c;多少行&#xff0c;多少字符。

wc语法

[root&#64;www ~]# wc [-lwm]
选项与参数&#xff1a;
-l &#xff1a;仅列出行&#xff1b;
-w &#xff1a;仅列出多少字(英文单字)&#xff1b;
-m &#xff1a;多少字符&#xff1b;

 

默认使用wc统计/etc/passwd

#wc /etc/passwd
40 45 1719 /etc/passwd

40是行数&#xff0c;45是单词数&#xff0c;1719是字节数

 

wc的命令比较简单使用&#xff0c;每个参数使用如下&#xff1a;

#wc -l /etc/passwd #统计行数&#xff0c;在对记录数时&#xff0c;很常用
40 /etc/passwd #表示系统有40个账户#wc -w /etc/passwd #统计单词出现次数
45 /etc/passwd#wc -m /etc/passwd #统计文件的字节数
1719


 



推荐阅读
  • 1. 设置用户密码:使用 `slappasswd` 工具生成加密密码,确保账户安全。具体步骤如下:输入命令 `slappasswd -s NewPassword`,系统将提示重新输入新密码,并生成加密后的哈希值 {SSHA}xxxxxxxxxxxxxxxxx。2. 编写配置文件:编辑 `vildapus` 配置文件,添加必要的用户账户信息,以确保新用户能够顺利登录系统。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • Linux Shell变量初探:初始值解析与使用指南
    本文探讨了Linux Shell中变量的基本概念及其在BASH中的应用。变量是用于存储可变数据的标识符,能够代表不同的值。文章详细介绍了BASH shell的主要优势,包括强大的命令编辑能力、自动补全功能、命令别名设置、作业控制以及前后台任务管理。此外,还涵盖了编程脚本编写和通配符的使用方法,为初学者提供了全面的指导。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 如何利用正则表达式(regexp)实现高效的模式匹配?本文探讨了正则表达式在编程中的应用,并分析了一个示例程序中存在的问题。通过具体的代码示例,指出该程序在定义和使用正则表达式时的不当之处,旨在帮助读者更好地理解和应用正则表达式技术。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
author-avatar
张晓和46872
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有