文档章节

SHELL利器:比较常用的SHELL命令(持续更新)

Iuranus
 Iuranus
发布于 2014/06/23 17:43
字数 1900
阅读 365
收藏 29
点赞 1
评论 2

awk,说shell中的瑞士军刀不为过吧

# 实现SQL中的group by功能,例如对“姓名    地点    年龄”按照地点字段统计其年龄之和
awk '{arr[$2]+=$3} END{for(i in arr) print i,arr[i]}' source_file.txt
# 对下述数据peo.o,按照城市分组(组内年龄降序排序),并使得全局分组的排序以组内年龄最大值降序排序
# 姓名    城市    年龄    
# 老Q    上海    65
# 老K    南京    68
# 小A    上海    24
# 小M    西安    25
# 老M    西安    88
# 老A    南京    45
# 期望结果
# 姓名    城市    年龄
# 老M    西安    88(组与组之间最大)
# 小M    西安    25(组内降序)
# 老K    南京    68
# 老A    南京    45
# 老Q    上海    65
# 小A    上海    24
sort -t $'\t' -k 3nr peo.o > peo_sort.o   # 预处理,对年龄全局降序排序
awk 'NR==FNR{if(arr[$2]=="") arr[$2]=$3} NR>FNR{print $0,"\t",arr[$2]} ' peo_sort.o peo_sort.o | sort -t $'\t' -k 4nr -k 3nr | cut -f 1-3 > peo_rs.o 
# awk中第一次遍历文档得到同城年龄最大值集合,第二次重新输出文件,其中每行新添一字段用以标注其所在组的最大年龄,sort中对新添字段排序,这时结果将按照组内年龄最大值分组降序排序,cut中截取原文档字段进行输出。

# 待续

sort,对文档数据进行排序

# 对txt.o第三列(以tab符分割)按照数值降序排序,输出到sort.o文件中
sort -t $'\t' -r -n -k 3 txt.o > sort.o
# 对txt.o第三列(以冒号分割)按照数值降序,第一列数值升序,第二列字符降序排列
sort -t $':' -k 3nr -k 1n -k 2r txt.o > sort.o
# 精确地对某个域进行排序(-k 2n可能是对从第二个域到最后的范围进行排序)
sort -t $'\t' -k1,1 -k7,7nr txt.o > sort.o #(对第一个域1,1和第7个域7,7nr进行排序)

-r    # 默认为升序,该参数将其改为降序排序
-t    # 按照后面指定的字符进行行切分,例如要按照tab符分割,则用$'\t'
-k    # 指定按照切分后的某列(字段)进行排序,首列为1
-n    # 将设置以数值进行排序,不然10会在2前面
-o    # sort默认将结果输出至标准输出,重定向>则将结果写入新文件,若重定向到原文件,则会清空原文件;该参数可将结果写入原文件,如 sort -r number.txt -o number.txt
-u    # 排序时去除重复的行
-f    # 忽略大小写(将小写字母都转换为大写字母来进行比较) 
-c    # 检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C    # 检查文件是否已排好序,如果乱序,不输出内容,仅返回1 
-M    # 会以月份来排序,比如JAN小于FEB等 
-b    # 忽略每一行前面的所有空白部分,从第一个可见字符开始比较

参考和补充(例如以第二个字段第二个字符排序之类):Linux Shell之sort命令


df,显示目前所有档案系统的最大可用空间及使用情形

# 常用命令,以易读格式显示文件系统使用情况
df -h

-a    # 显示全部的档案系统和各分割区的磁盘使用情形
-i    # 显示i -nodes的使用量
-h    # 显示使用「Human-readable」的输出(GB、MB 等易读的格式)
-k    # 大小用k来表示 (默认值)
-m    # 大小用M表示
-t    # 显示某一个档案系统的所有分割区磁盘使用量
-x    # 显示不是某一个档案系统的所有分割区磁盘使用量
-T    # 显示每个分割区所属的档案系统名称

du,查询档案或目录的磁盘使用空间

# 常用命令,以易读格式显示文件的磁盘使用空间,最后附上总计
du -ch

-a    # 显示全部目录和其次目录下的每个档案所占的磁盘空间
-b    # 大小用bytes来表示 (默认值为k bytes)
-c    # 最后再加上总计 (默认值)
-h    # 显示使用「Human-readable」的输出(GB、MB 等易读的格式)
-s    # 只显示各档案大小的总合 (summarize)
-x    # 只计算同属同一个档案系统的档案
-L    # 计算所有的档案大小

参考和补充:df命令和du命令用法详解


tar,对文件目录进行打包备份 

# 将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc        # 仅打包,不压缩!
tar -zcvf /tmp/etc.tar.gz /etc    # 打包后,以 gzip 压缩
tar -jcvf /tmp/etc.tar.bz2 /etc   # 打包后,以 bzip2 压缩
# 将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
cd /usr/local/src
tar -zxvf /tmp/etc.tar.gz

-c    # 建立新的归档文件 (create )
-x    # 从归档文件中解出文件
-r    # 向归档文件末尾追加文件    注意	#  在参数的下达中,c/x/t 仅能存在一个。
-O    # 将文件解开到标准输出
-v    # 处理过程中输出相关信息
-f    # 对普通文件操作
-z    # 调用gzip来压缩归档文件,与x联用时调用gzip完成解压缩
-Z    # 调用compress来压缩归档文件,与x联用时调用compress完成解压缩

参考和补充:tar命令的详细解


scp,主机之间拷贝文件

-a    # 尽可能将档案状态、权限等资料都照原状予以复制
-r    # 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地
-f    # 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制

参考和补充:SCP 命令


cron,定时执行任务

crontab -l    # 显示当前用户的cron服务
crontab -u    # 为某用户设置cron服务(一般root用户在执行cron命令时需要此参数)
crontab -e    # 编辑当前用户的cron服务(配合-u参数)
crontab -r    # 删除当前用户的所有cron服务(配合-u参数)
/sbin/service crond start/stop/restart/reload    # 启动/停止/重启/重新加载配置文件
# 单行为一个执行命令,前五个字段分别代表“分 时 日 月 周”,具体参看参考链接;
# 用户通过crontab -e设定的cron服务内容会被保存到/var/spool/cron/username文件中,在该文件被修改后,cron守护进程会重新读到内存;
# 在/etc/crontab文件中会有cron.hourly/cron.daily/cron.weekly/cron.monthly等内容,分别指定按时/日/周/月执行的内容文件;如果某cron服务需要根据调度来执行,而非按时/日/周/月执行,则可添加到/etc/cron.d目录中。

参考和补充:crontab 详解crontab命令详解


grep,全局正则搜索(Global search Regular Expression(RE) and Print out the line)

grep myword -r *    #在当前目录下面搜索所有含有myword的行
-n    # 在匹配的行前面打印行号
-r    # 递归搜索文件夹中目录及每个文件
-i    # ignore-case,忽略大小写
-h    # 打印时不显示文件名
-l    # 只显示包含匹配模板的行的文件名清单(不同项目之间用换行符分割)
-v    # 反检索,只显示不匹配的行
匹配tab符号:grep $'\t'

如果文章对你有用,请在收藏之余“顶/赞”一下以示鼓励吧 (/ω\)

© 著作权归作者所有

共有 人打赏支持
Iuranus
粉丝 11
博文 41
码字总数 22439
作品 0
高级程序员
加载中

评论(2)

Iuranus
Iuranus

引用来自“许雷神”的评论

支持
许雷神
许雷神
支持
Linux Shell基础知识,你想知道的都在这里

  小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读。   01/Linux 的江湖地位   Linux 作为一个全球用户超过14亿的操作系统,它的强大与神奇就不必多说了,混在IT界 Linux是可...

恒生开发者社区 ⋅ 2017/03/10 ⋅ 0

Linux目录(Centos)

easy808 ⋅ 2017/12/01 ⋅ 0

shell脚本编程 一

一、概述 shell 脚本是自动化运维的重要工具,是每个运维人员必备的技能之一。shell 脚本与 DOS 下的批处理相似,就是将一系列命令写入一个或几个文件中,方便的一次执行。同时,shell 脚本还...

Jerry_Baby ⋅ 2014/03/30 ⋅ 0

adb调试工具

adb调试工具 adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作: 1、快速更新设备或手机模拟器中的代...

lnredone ⋅ 2016/12/12 ⋅ 0

linux/Ubuntu服务器ftp配置错误及解决方案小记

错误:500 OOPS: cannot change directory:/home/uftp 意思是:不能改变目录:/ home / uftp 原因:经过查看,发现并没有/ home / uftp这个目录 解决方案:修改该ftp用户目录 命令:usermod -...

尘世如潮 ⋅ 2016/06/08 ⋅ 0

Linux 下常用命令集锦--待续

1、查看系统版本及位数 系统版本 方法一: #lsbrelease -a --该命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版 方法二: #cat /etc/xxx-release ---XX为发行版名称。如 centos-r...

北方攻城师 ⋅ 2015/03/25 ⋅ 0

mongodb学习(1)

一、mongodb和关系型数据库比较: 二:mongo的shell基本操作: 附:robomongo 是我使用的可视化工具 蛮不错的。 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaS...

金馆长1 ⋅ 2015/11/18 ⋅ 2

Linux&Unix 常用命令分类汇总

Unix命令分类如下: 构建块 文件 系统工具 命令工具 文件系统 终端 比较文件 登录和注销 文本格式化 目录 进程和作业控制 工具 显示数据 Shell 用户和用户标识 文档资料 选择数据 变量 编辑 ...

彼得 ⋅ 2014/03/11 ⋅ 1

运维常用工具

1、linux系统基础,常用命令 2、监控工具 cacti,nagios,zibbix ,nagios 3、shell脚本 4、docker 环境迁移,快速部署 5、jekins 持续集成,部署...

大道至精 ⋅ 2016/12/09 ⋅ 0

CentOS部署应用常用命令汇总

前言 最近项目在不断地更新迭代,项目部署也由笔者来做了。由于笔者不是专业的Linux服务器运维人员,所以好多用到的命令都是现查现用。这里汇总一下笔者目前自己用的命令,方便今后查阅。 当...

chace0120 ⋅ 2016/06/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部