Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)

内容预知


内容预知

 1.快捷排序——sort

 2.快捷去重——uniq

综合演练 (结合sort)

 3.快捷替换——tr

3.1   tr基本用法 

3.2 用于windows的编写的脚本格式转换为Linux格式 

4.快速裁剪命令——cut 

 4.1 ${ }截取字符串的方法

4.2 expr substr  截取方法

4.3 cut截取方法 

 5.文件拆分——split

 6.文件合并——paste

 7.变量扫描器——eval


 1.快捷排序——sort

 以行为单位,对文件的内容进行排序

格式:   sort   [选项]   参数

          常用选项: 

-n 按照数字的大小进行排序

-r

倒序排序(配合-n使用)
-u 相当于下面的那个命令uniq,去重复的行(只保留一行重复内容)
-t 指定字段的分隔符
-k 指定排序的字段
-o<输出文件> 另保存输出排序的结果(相当于重定向输出)
-f 忽略大小写,把小写字母也当作大写字母看待
-b 忽略每行前面的空格

sort  -n    和sort  -n  -r

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第1张图片

 sort  -u

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第2张图片

sort  -o 

 Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第3张图片

 2.快捷去重——uniq

 uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用。

格式:

uniq [选项] 参数  ​

 cat 文件| uniq 选项

-c 统计连续重复的行的次数,并且合并重复的行
-u 显示仅出现一次的行(包括不连续的重复行)
-d 仅显示重复出现的行(必须是连续的重复行)

uniq  -c Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第4张图片

 uniq  -uLinux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第5张图片

  uniq  -u

综合演练 (结合sort)

 需求:在/var/log/secure中记录着ssh登录的信息(其中也包含着登录失败的消息),我们认为密码输错三次,是一种外界入侵进行破译的过程,此刻写一个相关的脚本对输错三次的ssh登录主机进行禁用(登录禁用的文件在/etc/hosts.deny)

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第6张图片

 3.快捷替换——tr

3.1   tr基本用法 

常用来对来自标准输入的字符进行替换,压缩,和删除 

格式: cat 文件| tr [选项] 参数 

-c 保留字符集1的字符,其他字符包括换行符\n用字符集2替换
-d 删除所有属于字符集1的字符
-s 将连续重复的字符串压缩成一个
-t 字符集2 替换 字符集1,不加选项效果相同

默认的基本用法 :

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第7张图片

 tr-c:

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第8张图片

tr  -d :

 tr  -s:

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第9张图片

 tr -t:

运用:将$PATH中的":"改变为换行

[root@localhost tr]#echo $PATH|tr -s ':' '\n'

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第10张图片

3.2 用于windows的编写的脚本格式转换为Linux格

 拉入一个Windows编写好的shell测试脚本Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第11张图片

 报错原因:Linux中遇到了换行符(“\n”)会进行回车加换行的操作,回车符反而只会作为控制字符(“^ M”)显示,不发生回车的操作。而windows中要回车加换行符(“\r\n”)才会发生回车加换行的操作,缺少一个控制符,或则顺序不对都不能另一行

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第12张图片

解决方案一: 

[root@localhost tr]#cat window.sh |tr -d "\r" >windows

或则

[root@localhost tr]#cat window.sh |tr -s  "\r"  "\n" >windows

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第13张图片

方法二:

下载格式转换工具:dos2unix 

yum  install -y dos2unix

#使用格式
dos2unix    文件名

4.快速裁剪命令——cut 

 4.1 ${ }截取字符串的方法

在之前的博客中有详细讲解 

shell脚本编程之循环_站在这别动,我去给你买橘子的博客-CSDN博客https://blog.csdn.net/qq_62462797/article/details/126558087?spm=1001.2014.3001.5501

4.2 expr substr  截取方法

[root@localhost tr]#i=12345678
[root@localhost tr]#expr substr $i  1   3
123
[root@localhost tr]#expr substr $i  2   5
23456

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第14张图片

4.3 cut截取方法 

 对字段进行截取和剪裁

格式: 

格式一:cut [选项] 参数

格式二:cat file | cut [选项] 参数 

-d 指定分隔符(默认分隔符为Tab)
-f  按字段进行截取。指定第n个字段;n-m表示从第n个字段到第m个字段;a,b,c表示第a、第b、第c个字段
-b 以字节为单位进行截取
-c 以字符为单位进行截取
–complement 排除所指定的字段
–output-delimiter 更改输出内容的分隔符

[root@localhost tr]#cut -d ':' -f 1-3 /etc/passwd

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第15张图片

[root@localhost tr]#head -n 2 /etc/passwd|cut -d ':'  --complement  -f 2

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第16张图片

[root@localhost tr]#head -n 2 /etc/passwd|cut -d ':'  -f 1-5 --output-delimiter='@'

 Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第17张图片

 5.文件拆分——split

 split命令用于在Linux下将大文件拆分为若干小文件。

 格式:split 选项 参数 原始文件 拆分后文件名前缀

-l 指定行数
-b 指定文件的大小
[root@localhost tr]#split -l 20 test2.txt   sc

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第18张图片

 6.文件合并——paste

 按照字段来进行文件的合并

 格式:

paste   [选项]    文件1     文件2

-d 用于指定文件的分隔符(默认情况下为制表符"\n")
-s 将列和行的内容进行互相交换

运用演示:指定两个文件的第二列进行列合并 

[root@localhost tr]#cat a   b
1   2    3
2   3    4
2   1    2
4   3    4
2   1    3
12  1    3
12  11   21
11  12   34

a  b  c
c  b  a
d  e  f
f  d  e
f  h  j
g  k  l
1  2  3
[root@localhost tr]#cat b|awk '{print $2}' >c
[root@localhost tr]#cat a|awk '{print $2}' >d
[root@localhost tr]#paste  c  d
b	2
b	3
e	1
d	3
h	1
k	1
2	11
	12

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第19张图片

 7.变量扫描器——eval

命令字前加上eval,shell会在执行命令之前扫描它两次,eval命令首先会先扫描命令行进行所有的置换,然后再执行命令,该命令适用于那些一次扫描无法实现功能的变量,该命令会对变量进行两次扫描。 

脚本运用测试:

#!/bin/bash

#这是一个验证eval扫描的脚本
a=100
b=a

echo  "普通echo输出的变量b的值为:"  \$$b
eval echo "经过eval扫描输出变量b的值为:" \$$b

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第20张图片

 测试结果:

Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)_第21张图片

你可能感兴趣的:(Linux命令操作类,运维,云计算,linux,服务器)