热门标签 | 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


 



推荐阅读
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
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社区 版权所有