大数据开发中常用的shell命令
创始人
2025-05-31 22:29:07
0

内容目录

    • 一、date
    • 二、find
    • 三、awk
    • 四、cut
    • 五、if
    • 六、sort

一、date

具体的用法如下:

显示当前日期和时间

date +%Y-%m-%d\ %H:%M:%S

将日期转换为时间戳

date -d "2019-05-01 00:00:00" +%s

将时间戳转换为日期

date -d @1556668800 "+%Y-%m-%d %H:%M:%S"

计算两个日期之间的时间差

#!/bin/bashd1=$(date -d "2021-12-31" +%s)
d2=$(date +%s)
diff=$((($d1-$d2)/(60*60*24)))
echo "距离2021年底还有${diff}天"

获取当前日期的年份,月份和日份

#!/bin/bashyear=`date +%Y`
month=`date +%m`
day=`date +%d`

echo “当前日期是year年{year}年year年{month}月${day}日”
获取当前时间的小时,分钟和秒钟

#!/bin/bashhour=`date +%H`
minute=`date +%M`
second=`date +%S`
echo "当前时间是${hour}时${minute}分${second}秒"

需要注意的是,在处理日期时,要根据具体的需求来调整date命令的格式和参数,才能正确地获取到所需要的时间信息。

二、find

find命令是一条强大的搜索命令,可以在指定的目录下查找符合条件的文件或目录。具体的使用方式如下:

基本用法:

选项:-name:按照文件名查找。
-type:按照文件类型查找(d:目录,f:普通文件,l:符号链接,c:字符设备,b:块设备,s:套接字)。
-user:按照文件拥有者查找。
-group:按照文件所属组查找。
-size:按照文件大小查找。可以使用“+”表示比指定大小大,使用“-”表示比指定大小小。
-mtime:按照文件修改时间查找。可以使用“+”表示比指定时间早,使用“-”表示比指定时间晚。

表达式:

-print:将查找到的文件打印出来。
-exec:将查找到的文件执行某个命令。
例如:

  1. 在当前目录下查找文件名为test.txt的文件:
find . -name test.txt
  1. 在/home目录下查找所有拥有者为user1的文件:
find /home -user user1
  1. 在当前目录下查找所有修改时间在5天以内的文件:
find . -type f -mtime -5
  1. 在当前目录下查找所有大于10M的文件:
find . -type f -size +10M
  1. 查找并删除所有以test开头的文件:
find . -name "test*" -exec rm -f {} \;

三、awk

awk是一款文本处理工具,常用于文本数据的分析和处理。它可以对文件进行逐行处理,并且支持强大的文本处理功能,包括文本查找、替换、格式化等。下面是awk用法的详细介绍:

awk语法结构
awk是一种命令行工具,其语法结构如下:

$ awk 'pattern {action}' file

其中,

pattern表示匹配模式,可以是正则表达式或字符串等。如果该模式匹配到文件中的某一行,则执行action操作。
action表示需要执行的操作,可以是输出、替换、格式化等。
awk的常用选项
除了上述语法结构外,awk还支持以下常用选项:

-F:指定输入文件的字段分隔符。
-v:设置一个变量值。
-f:从指定文件中读取awk脚本。
-i:直接修改原始文件(需要linux或unix系统支持)。

awk的常用操作
awk支持的操作非常丰富,这里列出其中一些常用的操作:

输出:使用print或printf输出文本。
替换:使用gsub或sub替换文本。
计算:支持加减乘除等数字计算。
条件语句:包括if语句、while语句等。
循环语句:包括for语句、do-while语句等。
awk的范例用法
下面是几个awk的典型用法例子:

输出文件的每一行:awk ‘{print}’ file。
输出第一列:awk ‘{print $1}’ file。
输出指定行:awk ‘NR2{print}’ file。
计算文件总行数:awk ‘END{print NR}’ file。
列分割,输出第二列:awk -F’,’ ‘{print $2}’ file。
输出一行中所有包含指定字符串的内容:awk ‘/字符串/{print $0}’ file。
替换指定行中的字符串:awk 'NR
2{gsub(/oldstring/,“newstring”);print}’ file。
总的来说,awk是一款非常强大的文本处理工具,使用广泛,可以快速地对文件进行处理和转换。

四、cut

cut 命令可以用来剪切文件或标准输入中的字段,并将其写到标准输出上。以下是 cut 命令的详细用法:

命令格式

cut [选项] 文件

命令选项
选项 作用
-f 指定字段
-d 分隔符
-s 不显示没有分隔符的行
选项说明
-f 选项
-f 选项用于指定要剪切的字段。指定多个字段时,使用逗号 , 分隔。

cut -f 2,4 file.txt  # 剪切文件 file.txt 中的第 2 和第 4 个字段

如果要指定一定的字段范围,可以使用 - 符号。

cut -f 2-4 file.txt # 剪切文件 file.txt 的第 2~4 个字段

-d 选项
-d 选项用于指定字段的分隔符,默认使用制表符。

cut -d , -f 2 file.txt  # 剪切文件 file.txt 中以逗号分隔的第 2 个字段

-s 选项
-s 选项用于不显示没有分隔符的行,即只显示包含指定字段的行。

cut -s -f 2 file.txt  # 只显示包含第 2 个字段的行

五、if

if是一种条件判断语句,在shell脚本中常常用来判断某个条件是否成立,如果成立则执行其后的语句块。if语句的一般格式如下:

if [ condition ]
then
commands
fi

其中,condition是一个测试条件,可以是比较操作符(例如“-gt”表示大于)、文件测试操作符(例如“-f”表示文件存在)、逻辑操作符(例如“&&”表示与)、字符串比较操作符(例如“=”,“!=”)等。

commands是在条件成立时需要执行的一系列指令,可以是任意的shell指令或其他脚本语言指令。这些指令可以跨越多行,并以fi作为语句块的结尾。

if语句可以与else语句同时使用,即当条件不成立时需要执行另一系列指令。其一般格式如下:

if [ condition ]
then
commands
else
commands
fi

在实际编写脚本时,也可以将多个if语句和else语句结合起来,使用elif条件进行嵌套。其一般格式如下:

if [ condition1 ]
then
commands
elif [condition2 ]
then
commands
else
commands
fi

条件语句的条件可以是真假值,数字、字符串等。同时,可以用“test”命令来进行条件测试:

if test -f file.txt
then
commands
fi

实际上test命令就是[ ]命令的另一种写法。

除了使用[ ]和test命令,还可以使用其他管道和命令来进行条件判断。例如,判断某个命令的返回状态:

if grep "hello" file.txt
then
commands
fi

此处,如果grep命令在file.txt中找到了“hello”,则会返回0,条件成立,执行后续命令。

if的参数:
在Shell中使用if语句时,有以下几种参数:

在Shell中使用if语句时,有以下几种参数:[ expression ]:方括号内的表达式返回0(真)或1(假)。test expression:test命令的返回值也是0或1。[[ expression ]]:双方括号内支持更多的比较运算符(如<,>,=等)。(( expression )):双圆括号主要用于整数比较,支持算术操作符(如+,-等)。-n string:字符串不为空时返回真。-z string:字符串为空时返回真。-e file:文件存在时返回真,通常用于判断文件是否存在。-f file:文件存在且为普通文件时返回真。-d file:文件存在且为目录时返回真。-r file:文件存在且可读时返回真。-w file:文件存在且可写时返回真。-x file:文件存在且可执行时返回真。-a file:文件存在时返回真(同-e参数)。-b file:文件存在且为块设备文件时返回真。-c file:文件存在且为字符设备文件时返回真。-s file:文件存在且大小不为0时返回真。file1 -nt file2:如果file1比file2新,则返回真。file1 -ot file2:如果file1比file2旧,则返回真。expression1 -a expression2:返回真当且仅当expression1和expression2都为真。expression1 -o expression2:返回真当且仅当expression1或expression2至少有一个为真。

六、sort

sort命令是一个强大的文本排序工具。它可以将文本文件的内容按照指定的顺序排序。

sort命令的基本语法为:

sort [options] [file]

其中,options是sort命令的选项,可以用来指定排序方式、忽略大小写、按照数字大小排序等。file是要排序的文本文件。

下面是sort命令的一些常用选项:

-r:倒序排序。
-n:按照数字大小排序。
-f:忽略大小写。
-u:去除重复行。
-k n:按照第n列排序。
-t c:指定排序字段的分隔符为c。
例如,要按照数字大小排序一个文件file.txt,可以使用以下命令:

sort -n file.txt

如果需要使用默认的升序排序方式,则不需要指定-n选项。

如果想要去除重复行,则可以使用以下命令:

sort -u file.txt

若文件中的内容需要按第2列的内容进行排序,可以使用以下命令:

sort -k 2 file.txt

如果字段之间的分隔符不是默认的空格,可以使用-t选项指定分隔符,例如:

sort -t ',' -k 3 file.csv

sort命令还可以从标准输入(stdin)中读取数据。例如,在命令行中输入以下命令:

echo "b\na\nc" | sort

这条命令会将字符b、a和c按照字母顺序排序,并输出排序后的结果。

总结一下,sort命令是所学shell命令中比较常用也非常实用的一个命令,它可以通过选项的组合来满足不同场景下的排序需求。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...