• 刷刷shell提总结下— 不用总忘还是常总结啊


    1.统计文件行数

    wc -l
    
    • 1

    -l ,–lines 显示行数

    -w,–words 显示字数

    -c,–chars 显示子符数

    -L,–max-line-length 显示最长行的长度

    2.打印最后5行

    tail -n 5
    
    • 1

    -n <行数> 指定显示行数

    -c <数目> 指定显示的字节数

    -f 实时输出环境变化

    -F 相当于 -f–retry

    –retry 不停尝试打开文件,知道打开为止 与-f合用

    –pid=<进程号> 与-f连用,在进程结束后自动结束tail命令

    -s 刷新间隔

    -q 不显示文件头

    -v 总显示文件头

    3.输出7的倍数

    #!/bin/bash
    seq 0 500 |awk '{if($1%7==0){print $1}}'
    
    • 1
    • 2

    seq 输出连续数字

    指定步长的 seq 0 2 500

    -s 指定分隔符,默认回车

    -w 指定位数

    -f 指定格式

    [root@C7–01 ~]# seq -f ‘文件 %04g.txt’ 9 11
    文件 0009.txt
    文件 0010.txt
    文件 0011.txt

    seq -f ‘aa.%04g.txt’ 1 5 |xargs touch

    awk: awk是一种处理文本文件的编程语言,文件的每行数据被称为记录,默认以空格或制表符为分隔符,每条记录会被分成若干字段(列), awk每次从文件中读取一条记录。

    ​ awk 选项 ‘模式或条件 {操作}’ 文件1 文件2

    ​ awk -f 脚本文件 文件1 文件2

    FS:列分隔符。指定每行文本的字段分隔符,默认为空格或制表位,与“ -F ”作用相同

    OFS:输出分隔符。指定输出字段间的分隔符。

    RS:行分隔符。awk从文件读取资料时,将根据RS的定义把资料切割为多条记录,
    awk一次仅读取一条记录,以进行处理,预设值为 \n (换行符)

    NF:当前处理行的字段个数

    NR:当前处理行的行号

    FNR:awk当前读取的记录数,其变量值小于等于NR
    (比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。

    NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件

    $0:当前处理行的整行内容

    $n:当前处理行的第 n 个字段(第 n 列)

    FILENAME:被处理的文件名

    示例:

    #指定参数 $0 表示所有 $1 表示第一列
    [root@VM-16-8-centos www]# free | awk '{print $1 "   "  $3}'
    total   free
    Mem:   2607280
    Swap:   0
    
    # NR 当前行号
    [root@VM-16-8-centos www]# free |awk '{print NR}'
    1
    2
    3
    # NF 显示当前行的列数
    [root@VM-16-8-centos www]# free |awk '{print NF}'
    6
    7
    4
    
    # 引申 打印最后一列可以写作
    [root@VM-16-8-centos www]# free |awk '{print $NR}'
    total
    3782688
    0
    #倒数第二列
    [root@VM-16-8-centos www]# free |awk '{print $ (NF-1)}'
    buff/cache
    1009156
    0
    
    #文件名
    [root@VM-16-8-centos www]# awk '{print FILENAME}' te
    te
    te
    te
    
    #awk可以通过-v(variable)选项设置或者修改变量的值,我们可以使用-v定义新的变量,也可以使用该选项修改内置变量的值。
    [root@VM-16-8-centos www]# awk -v x="Tom" '{print x}' te
    Tom
    Tom
    Tom
    
    # 指定分隔符 FS 加 -v
    [root@VM-16-8-centos www]# awk -v FS='' '{print $3}' te
    1
    1
    1
    # 指定多个分隔符  下面指 冒号、逗号或空格分隔
    [root@VM-16-8-centos www]# awk -v FS="[:, ]" '{print $3}' te
    2
    2
    2
    # -v FS  等同于直接用 -F
    [root@VM-16-8-centos www]# awk '{print $0}' te
    a 1 2 3:aa
    b 1 2 3:bb
    c 1 2 3:cc
    [root@VM-16-8-centos www]# awk -F"[:, ]" '{print $NF}' te
    aa
    bb
    cc
    # 内置变量OFS保存的是输出字段的分隔符,默认为空格,而变量ORS保存的是输出记录的分隔符,默认为换行符\n。这些内置变量也都可以使用-v选项来自定义修改。
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
  • 相关阅读:
    ArrayList、LinkedList、Collections.singletonList、Arrays.asList与ImmutableList.of
    Hadoop多用户配置
    通信原理学习笔记6-3:数字解调——判决和误码率推导
    Python爬虫抢购某宝秒杀商品
    No matching version found for zr-map-ol@1.1.19.
    JS中this的绑定规则
    【Linux】:Linux中Shell命令及其运行原理/权限的理解
    【见闻录系列】浅谈搜索系统与推荐系统的一点区别
    Webpack常见的插件和模式
    Go语言的跨文件调包
  • 原文地址:https://blog.csdn.net/weixin_42439274/article/details/133996436