美文网首页
shell系列10-其它常用命令

shell系列10-其它常用命令

作者: 只是甲 | 来源:发表于2022-04-18 16:15 被阅读0次

一.cut

1.1 cut概述

cut是以每一行为一个处理对象的。cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数:

-b :输入每行第n个字符(半角,注意如果有中文将乱码)。

-c :输入每行第n个字符(适用中文)。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符(例如中文)。仅和-b标志一起使用。

1.2 cut实例

1.txt文本

abc aaaaaaa de
wwwwwww dd zz
ff f f

2.1 按列进行分割

cut -d " " -f 1 1.txt 

这个有点类似awk的打印输出列

[root@hp5 tmp]# cut -d " " -f 1 1.txt    
abc
wwwwwww
ff
[root@hp5 tmp]# cut -d " " -f 2 1.txt  
aaaaaaa
dd
f
[root@hp5 tmp]# cut -d " " -f 3 1.txt  
de
zz
f
[root@hp5 tmp]# 
[root@hp5 tmp]# cut -d " " -f 2,3 1.txt 
aaaaaaa de
dd zz
f f
[root@hp5 tmp]# 
[root@hp5 tmp]# cut -d " " -f 1-3 1.txt   
abc aaaaaaa de
wwwwwww dd zz
ff f f
[root@hp5 tmp]# 

二. find

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

2.1 语法及参数

语法:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

  1. -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
  2. -amin n : 在过去 n 分钟内被读取过
  3. -anewer file : 比文件 file 更晚被读取过的文件
  4. -atime n : 在过去n天内被读取过的文件
  5. -cmin n : 在过去 n 分钟内被修改过
  6. -cnewer file :比文件 file 更新的文件
  7. -ctime n : 在过去n天内被修改过的文件
  8. -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
  9. -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
  10. -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
  11. -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
  12. -type c : 文件类型是 c 的文件。
    d: 目录
    c: 字型装置文件
    b: 区块装置文件
    p: 具名贮列
    f: 一般文件
    l: 符号连结
    s: socket
  13. -pid n : process id 是 n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

  1. exp1 -and exp2
  2. ! expr
  3. -not expr
  4. exp1 -or exp2
  5. exp1, exp2

2.2 实例

-- 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"

-- 将当前目录及其子目录中的所有文件列出
find . -type f

-- 将当前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime  20

-- 查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们
find /var/log -type f -mtime +7 -ok rm {} \;

-- 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find . -type f -perm 644 -exec ls -l {} \;

-- 查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \;

用的比较多的,清理超过7天的以 .sql结尾的文件

find /backup -name "*.sql" -mtime +7 -exec rm {} \;

三. sort

Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常用的文件排序工具;
sort命令与awk一样,将文件看作记录和域进行处理,默认的域分隔符是空格符,sort命令的格式为:

3.1 语法及参数

语法:

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]

参数说明:

image.png

3.2 实例

CARGO.db

ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
HP:China:5600:2010:DM3
SumSung:Korea:5400:2009:Q308
ThinkPad:USA:14000:2009:X301
IdeaPad:China:8000:2007:U450
Acer:Taiwan:8000:2010:PT210
Acer:Taiwan:8000:2010:PT210

3.2.1 字符首字母排序

-t: 冒号为分割域,以首字母的字符来排序

[root@node1 sort]# sort -t: CARGO.db
Acer:Taiwan:8000:2010:PT210
Acer:Taiwan:8000:2010:PT210
HP:China:5600:2010:DM3
IdeaPad:China:8000:2007:U450
SumSung:Korea:5400:2009:Q308
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301

3.2.2 按指定域排序

-k2按照第二域进行排序

[root@node1 sort]# sort -t: -k2 CARGO.db
HP:China:5600:2010:DM3
IdeaPad:China:8000:2007:U450
SumSung:Korea:5400:2009:Q308
Acer:Taiwan:8000:2010:PT210
Acer:Taiwan:8000:2010:PT210
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301

-k3按照第三域排序,第三域是数字,但是这个地方却是按照字符串排序,也就是按照第一个数字的大小排序

[root@node1 sort]# sort -t: -k3 CARGO.db
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
SumSung:Korea:5400:2009:Q308
HP:China:5600:2010:DM3
IdeaPad:China:8000:2007:U450
Acer:Taiwan:8000:2010:PT210
Acer:Taiwan:8000:2010:PT210

-k3n 按照第三域数字排序

[root@node1 sort]# sort -t: -k3n CARGO.db
SumSung:Korea:5400:2009:Q308
HP:China:5600:2010:DM3
Acer:Taiwan:8000:2010:PT210
Acer:Taiwan:8000:2010:PT210
IdeaPad:China:8000:2007:U450
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301

-k3nr 按照第三域数字逆向排序

[root@node1 sort]# sort -t: -k3nr CARGO.db
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
ThinkPad:USA:14000:2009:X301
Acer:Taiwan:8000:2010:PT210
Acer:Taiwan:8000:2010:PT210
IdeaPad:China:8000:2007:U450
HP:China:5600:2010:DM3
SumSung:Korea:5400:2009:Q308

3.2.3 去掉重复行

-u 去掉重复行

[root@node1 sort]# sort -t: -k3nr -u CARGO.db
ThinkPad:USA:14000:2009:X301
IdeaPad:China:8000:2007:U450
HP:China:5600:2010:DM3
SumSung:Korea:5400:2009:Q308

3.2.4 输出重定向

-o 将输出重定向到一个文件中

[root@node1 sort]# sort -t: -k3nr -o PRICE.db CARGO.db

3.2.5 测试是否排序

-c选项,测试是否排序

[root@node1 sort]# sort -t: -c CARGO.db
sort:CARGO.db:4:无序: HP:China:5600:2010:DM3

四.uniq

Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。

4.1 语法及参数

语法:

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

参数:
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终

4.2 实例

testfile

test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85
Linux 85 

测试记录:

[root@hp8 tmp]# uniq testfile   
test 30  
Hello 95  
Linux 85
[root@hp8 tmp]# uniq -c testfile
      3 test 30  
      4 Hello 95  
      2 Linux 85
[root@hp8 tmp]# 

相关文章

  • shell系列10-其它常用命令

    一.cut 1.1 cut概述 cut是以每一行为一个处理对象的。cut一般以什么为依据呢? 也就是说,我怎么告诉...

  • Shell命令汇总

    1、一般常用命令 (1)Shell 常用命令总结 (2)Shell的18条常用命令整理 2、文件操作常用命令 (1...

  • HBASE SHELL常用命令

    HBASE SHELL常用命令 标签: HBase Shell 1. 进入hbase shell console ...

  • Shell参考资料

    shell 目录 Shell简介 Shell常用命令 Shell里面的括号 Shell里面的单引号和双引号 She...

  • Shell脚本

    shell脚本学习笔记 shell命令的组合运用 常用命令组合

  • unix常用命令

    UNIX操作指引 目录 1 Shell常用命令.....................................

  • Shell编程、part1

    1.shell简介2. shell分类3. 查看shell4. 第一个shell脚本5. shell编程常用命令5...

  • 关于Docker常用的命令

    常用命令总结: attach Attach to a running container # 当前 shell...

  • shell - 其它结构

    case 多重分支 1 语法 (2) 例子 (3) 用法 在case的变量, 在这条语句上面将其转换为变量, 和...

  • Linux Shell: 各种tips

    通用Linux中执行shell脚本的4种方法总结hbase shell基础和常用命令详解 2.字符串Shell脚本...

网友评论

      本文标题:shell系列10-其它常用命令

      本文链接:https://www.haomeiwen.com/subject/srifjrtx.html