Linux操作命令(下)

Linux操作命令(八)
1)sort命令
sort命令能够帮助我们对文本文件和stdin进行排序操作

1.1. 命令格式
sort [选项] [文件名]

1.2. 常用参数
-n 基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值
-k 指定排序关键字
-b 默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致sort程序忽略每行开头的空格,从第一个非空 白字符开始排序
-m 只合并多个输入文件
-r 按相反顺序排序,结果按照降序排序,而非升序
-t 自定义分隔符,默认为制表符

1.3. 常用范例
$du -s /usr/share/* | srot -nr | head -10 #列出/usr/share/目录下使用空间最多的前10个目录文件
$ls -l /usr/bin/ | sort -nr -k 5 | head -10 #对ls命令输出信息中的空间使用大小字段进行排序
$sort -k 1, 1 -k 2n data.txt #第一个-k选项指明只对第一个字段排序,1,1意味着“始于并且结束于第一个字段”
第二个-k选项2n表示对第二个字段按数值排序
注:如-k 3.4n,表示始于第三个字段的第四个字符,按数值排序

2)uniq命令
uniq命令经常和sort命令结合在一起使用,uniq从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行。
uniq只能用于排过序的数据输入,因此uniq要么使用管道,要么将排过序的文件作为输入,并总是以这种方式与sort命令结合起来。

2.1. 命令格式
uniq [选项] [文件名]

2.2. 常用参数
-c 在每行前面加上表示相应行目出现次数
-d 只输出重复的行
-u 只显示唯一的行
-D 显示所有重复的行
-f 在比较时跳过前n行
-i 在比较时不区分大小写
-s 在比较时跳过前n个字符
-w 对每行第n个字符以后的内容不作对照

2.3. 常用范例
$ls /bin /usr/bin | sort | uniq -d #找出/bin目录和/usr/bin目录下所有相同的命令

#首先按区号对每行信息排序,然后使用uniq命令对区号进行重复行统计
sort -k 4.1n,4.1n #4.1n表示对第四个字段的第一个字符按数值排序
uniq -c -f 3 -w 2 #-f 3表示跳过前3列的比较,那么现在只剩下最后一列
-w 2表示第二个字符后的内容不做比较,为什么是2呢,因为跳过前三列时并没有跳过最后一列前面 的空格分隔符,区号前都还有一个空格

$cat student.txt
lisi 2000 98 1-24-56
wuli 2001 85 2-15-24
shen 2003 90 1-17-56
suya 2004 92 1-08-12
zhan 2005 86 2-06-15

$sort -k 4.1n,4.1n student.txt | uniq -c -f 3 -w 2
输出
3 lisi 2000 89 1-24-56
2 wuli 2001 85 2-15-24

3)join命令
join命令类似于paste,它会往文件中添加列,它把来自于多个基于共享关键域的文件的数据结合起来

3.1. 命令格式
join [选项] 文件1 文件2 

3.2. 常用参数
-j FIELD 等同于-1 FIELD -2 FIELD,-j指定一个域作为匹配字段
-1 FIELD 以file1中FIELD字段进行匹配
-2 FIELD 以file2中FIELD字段进行匹配
-t 自定义分隔符,默认为制表符

3.3. 常用范例
$join a.txt b.txt #将两个文件中的第一个字段作为匹配字段,连接两个文件
$join -1 3 -2 3 c.txt d.txt #指定两个文件的第三个字段为匹配字段,连接两个文件

Linux操作命令(九)
1)comm命令
comm命令将逐行对比已经排序的两个文件,显示结果包括3列:第一列为只在第一个文件中找到的行、第二列为只在第二个文件中找到的行、第三列为两个文件的共有行。

1.1. 命令格式
comm [选项] 文件1 文件2

1.2. 常用格式
-1 不输出文件1特有的行
-2 不输出文件2特有的行
-3 不输出两个文件共有的行

1.3. 常用范例
$comm file1.txt file2.txt #比较file1.txt和file2.txt两个文件的内容

2)diff命令
类似于comm命令,diff命令被用来监测文件之间的差异。
然而diff是一款更加复杂的工具,它支持许多输出格式,并且一次能处理许多文本文件。diff能够递归地检查源码目录,经常称之为源码树。
diff在命令行中打印每一行的改动,并且diff是sun、cvs、git等版本控制工具不可或缺的一部分。

2.1. 命令格式
diff [选项] 文件

2.2. 常用参数
-c 上下文模式,显示全部内容,并标出不同之处
-u 统一模式,以合并的方式来显示文件内容的不同
-a 只会逐步行比较文本文件
-N 在比较目录时,若文件为仅出现在某个目录中,预设会显示:only in目录。若使用-N参数,则diff会将文件A与一个空 白的文件比较
-r 递归比较目录下的文件

2.3. 常用范例
$diff file1.txt file2.txt #显示file1.txt和file2.txt两个文件的差异
输出结果为‘2d1’表示file1.txt第二行与file2的第一行不同
4c3,4表示file1第四行与file2的第三、四行不同
其中:a-add、c-change、d-delete
1c1、3d2、5a5是说明变动的位置,前面的数字代表file1中所变化的行,后面的数字代表file2中所变化的行。

$diff -c file1.txt file2.txt #上下文模式显示
$diff -u file1.txt file2.txt #统一模式(常用)

3)patch命令
patch命令被用来把更改应用到文本文件中,它接受从diff程序的输出,并且通常被用来把较老的文件版本转变为较新的文件版本。
使用diff/patch组合提供了两个重大优点:
1.一个diff文件非常小,与整个源码树的大小相比较而言
2.一个diff文件简洁地显示了所做的修改,从而允许程序补丁的审阅者能快速地评估它

diff -Naur old_file new_file > diff_file
r选项支持递归目录树

3.1. 命令格式
patch [选项] 补丁文件

3.2. 常用参数
-p num 忽略几层文件夹
-E 如果发现了空文件,那么就删除它
-R 取消打过的补丁

3.3. 常用范例
$diff -Nuar file1.txt file2.txt > patch_diff.txt
$patch < patch_diff.txt
#生成file1.txt和file2.txt的diff文件,然后应用patch命令更新file1.txt
$patch -R < patch_diff.txt #取消上面打过的补丁

Linux操作命令(十)
1)df命令(disk free)
df命令用来检查Linux服务器的文件系统的磁盘空间占用情况。

1.1. 命令格式
df [选项] 文件

1.2. 常用参数
-a 全部文件系统列表
-i 显示inode信息
-h 方便阅读方式显示
-T 文件系统类型
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息

1.3. 常用范例
$df #显示磁盘使用情况
$df -T ext4 #显示指定类型磁盘

2)du命令(disk usage)
与diff命令不同,du命令是对文件和目录磁盘的空间的创建

2.1. 命令格式
du [选项] 文件

2.2. 常用参数
-a 全部文件系统列表
-i 显示inode信息
-h 方便阅读方式显示
-T 文件系统类型
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息

2.3. 常用范例
$du -h file1.txt #显示指定文件所占空间,以方便阅读的格式显示
$du -h Desktop #显示指定文件所占空间,以方便阅读的格式显示
$du -ch file1.txt file2.txt #显示n个文件或目录各自占用磁盘空间大小,并统计总和
$du -h | sort -nr | head -10 #按空间大小逆序排序显示

3)time命令
time命令常用于测量一个命令的运行时间,包括实际使用时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)
实际时间:从command命令行开始执行到运行终止的时间
用户态时间:命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和
内核态时间:命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和

3.1. 命令格式
time 命令

3.2. 常用范例
$time date #测量date命令运行的时间

#将time命令的执行结果保存到文件中
${time date; } 2>1.txt
$(time date) 2>2.txt

猜你喜欢

转载自blog.csdn.net/zhaocen_1230/article/details/80646746