Linux实用命令补充


sort指令

sort [选项] 参数
cat file | sort 选项

为单位对文件内容进行排序,也能够依据不同的数据类型来排序比较原则是从首字符向后,依次按AscII码值进行比较,最后将他们按升序输出。

Linux实用命令补充

常用选项

选项 效果
-n 按照数字进行排序
-r 反向排序
-u 等同于uniq,表示相同的数据仅显现一行
-t 指定字段分隔符,默许运用[Tab]键分隔
-k 指定排序字段
-o<输出文件> 将排序后的成果转存至指定文件
-f 疏忽大小写,会将小写字母都转换为大写字母来进行比较
-b 疏忽每行前面的空格
  • 按数字进行排序

    Linux实用命令补充

  • 反向排序

    Linux实用命令补充
    Linux实用命令补充

  • 相同的数据仅显现一行

    Linux实用命令补充

  • 指定分隔符和指定排序字段

    Linux实用命令补充

  • 排序后的成果转存至指定文件

    Linux实用命令补充

    效果和重定向输出类似,重定向输出只能输入静态的内容

    Linux实用命令补充

  • 疏忽大小写

    Linux实用命令补充

用处举例:筛选du计算占用状况

Linux实用命令补充

uniq指令

uniq [选项] 参数
cat file | uniq [选项]

用于疏忽文件中连续的重复行,通常与sort指令结合运用。(去重)

Linux实用命令补充
Linux实用命令补充

常用选项

选项 效果
-c 进行计数,并删去文件中重复呈现的行
-d 仅显现连续的重复行
-u 仅显现呈现一次的行
  • 计算重复次数

    Linux实用命令补充

  • 仅显现连续重复行和仅显现呈现一次的行

    Linux实用命令补充

用处举例:可用于监测用户登录次数

Linux实用命令补充
Linux实用命令补充

脚本内容

#!/bin/bash
#监测用户登录
grep 'Failed password' /var/log/secure | awk '{print $11}' | sort -n | uniq -c > IPS.txt
OLD_IFS=$IFS
IFS=$'\n'
for i in $(cat IPS.txt)
do
        num=$(echo $i | awk '{print $1}')
        ip=$(echo $i | awk '{print $2}')
        if [ $num -gt 3 ];then
                echo "sshd:$ip" >> /etc/hosts.deny
        fi
done
IFS=$OLD_IFS
rm -f IPS.txt

解析

  • 筛选出对应的IP地址并计算次数

    Linux实用命令补充

  • 筛选出相应的数据赋给变量,并对登录次数进行判别

    Linux实用命令补充

tr指令

tr [选项] 参数1 参数2

常用来对来自标准输入的字符进行替换、紧缩和删去

常用选项

选项 效果
-c 保存字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d 删去一切归于字符集1的字符
-s 将重复呈现的字符串紧缩为一个字符;用字符集2替换字符集1
-t 字符集2替换字符集1,不加选项同成果
  • 字符集2替换字符集1

    Linux实用命令补充
    Linux实用命令补充

    符号也能够替换

    Linux实用命令补充
    Linux实用命令补充

    字符集1和字符集2具有对应联系

    Linux实用命令补充

  • 保存字符集1的字符,其他的字符用字符集2替换

    Linux实用命令补充

    换行符\n也会被替换

    Linux实用命令补充

  • 删去一切归于字符集的字符

    Linux实用命令补充

  • 紧缩并替换

    Linux实用命令补充
    Linux实用命令补充
    Linux实用命令补充

删去空行

运用grep

Linux实用命令补充

运用tr -s

Linux实用命令补充

弥补:删去windows文件“形成”的’^M’字符

Windows中编写的脚本文件移动到Linux中会多“^M”字符。

Linux实用命令补充

原因

  • Linux中遇到换行符(“\n”)会进行回车+换行的操作,回车符反而只会作为控制字符(“^M”)显现,不发生回车的操作。
  • windows中要回车符+换行符(“\r\n”)才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行。

删去^M的办法

  • 办法一:利用tr删去

    Linux实用命令补充

  • 办法二:装置dos2unix,运用dos2unix删去

    Linux实用命令补充
    Linux实用命令补充

弥补:运用sort和tr排序数组

Linux实用命令补充

cut指令

cut 参数
cut file | cut 选项

显现行中的指定部分,删去文件中指定字段。

常用选项

选项 效果
-f 经过指定哪一个字段进行提取。cut指令运用”TAB”作为默许的字段分隔符。
-d “TAB”是默许的分隔符,运用此选项能够更改为其他的分隔符。
-b 截取字符串
–complement 此选项用于扫除所指定的字段。
–output-delimiter 更改输出内容的分隔符。
  • 指定提取哪一字段,指定分隔符

    Linux实用命令补充
    Linux实用命令补充
    Linux实用命令补充

  • 截取字符串

    • echo直接截取

      Linux实用命令补充

    • cut -b

      Linux实用命令补充

    • expr substr 变量名 第几个字符开端 截取长度

      Linux实用命令补充

  • 用于扫除所指定的字段

    Linux实用命令补充

  • 更改输出内容的分隔符

    Linux实用命令补充

split指令

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

可将将一个大的文件拆分成若干小文件

常用选项

选项 效果
-l 以行数拆分
-b 以大小拆分

Linux实用命令补充

paste指令

paste [-s] [-d<距离字符>] 文件..

用于兼并文件的列

Linux实用命令补充

一般的兼并,经过重定向追加,或者将两个文件重定向输出到第三个文件即可完结。

Linux实用命令补充

Linux实用命令补充

常用选项

选项 效果
-d <距离字符> 用指定的距离字符替代制表符
-s 把多行内容兼并为一行进行显现
  • 用指定的距离字符替代制表符

    Linux实用命令补充

  • 多行内容兼并为一行进行显现

    Linux实用命令补充

  • 组合运用

    Linux实用命令补充

将文件1的第2列和文件2的第3列兼并

  • 将两个文件的对应列分别导出到另一个文件,然后再运用paste兼并。
    Linux实用命令补充

eval指令

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

即先解析指令中的变量,再履行解析后的指令。

Linux实用命令补充

结合脚本运用

Linux实用命令补充

Linux实用命令补充

Linux实用命令补充