• NO7 利用三剑客awk-grep-sed-head-tail等7种方法实践


    ·seq   sequence  #序列
    ·sed   stream editor  #(三剑客老二)流编辑器。实现对文件的增删改替换查。
            -n #取消默认输出。sed -n '20,30'p ett.txt  这里  p 表示打印
            一、sed命令:
            d  删除当前模式空间所有的内容。
            g  与s联合使用时,表示对当前行全局匹配替换。
            p  打印匹配行。
            s  常说的查找并替换,用一个字符串替换成另一个。
            二、sed选项:
            -e  #允许多项编辑
            -f  #后面接sed脚本的文件名
            -n  #取消默认输出
            -i  #修改文件内容
           
    ·awk   (三剑客老大)过滤,输出内容,自成一门语言。 NR:行号    

    特殊符号:

    ·=       #linux里   一个=号是赋值的意思,俩个==号才是等于的意思


    ·有能力的人,给出三种以上的方法,才叫有方法!

    问题十一:只查看ett.txt文件(100行)内第20到第30行的内容(企业常见面试题)。
    解答:sequence==seq序列

    方法一(这方法很low)
    head [-n] [文件名] :后面直接跟文件名,显示文件前十行。-n表示显示文件前n行。
    tail [-nf] [文件名] :后面直接跟文件名,显示文件后十行。-n表示显示文件后n行。

    [root@localhost /]# head -30 ett.txt|tail -11
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    方法二:(*必会)
    ·sed -n '20,30'p ett.txt    #这个命令更有效,要记住!
            -n #取消默认输出。
             p  #表示打印
    [root@localhost /]# sed -n '20,30'p ett.txt   (用引号‘’保险,规范)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    [root@localhost /]# sed -n '$'p ett.txt   ($符号是结尾的意思)
    100

    方法三:锦上添花:
    [root@localhost /]# awk '19<NR && NR<31' ett.txt  (NR行号;&&并且,俩边同时成立)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# awk '19<NR&&NR<31' ett.txt  (&&俩边没空格也行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    方法四:锦上添花
    [root@localhost /]# awk '{if(NR<31 && NR>19) printf $0" "}' ett.txt
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# awk 'NR==31' ett.txt   (直接定在第31行)
    31

    方法五:
    [root@localhost /]# grep 20 -A 10 ett.txt  (匹配第20行,显示改行之后的10行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# grep 30 -B 10 ett.txt   (匹配第30行,显示改行之前的10行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# grep 25 -C 5 ett.txt   (匹配第25行,然后再显示改行前后各5行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    #Context control:
    -A  #除了显示匹配的一行之外,并显示该行之后的num行。
    -B  #除了显示匹配的一行之外,并显示该行之前的num行。
    -C  #除了显示匹配的一行之外,并显示该行之前后各num行。
     


    此篇命令记录:

    [root@localhost /]# seq 1 10
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@localhost /]# seq 1 2 10
    1
    3
    5
    7
    9
    [root@localhost /]# seq 1 3 10
    1
    4
    7
    10
    [root@localhost /]# seq 100 >ett.txt  (这代表创建了一个有1-100,100行数字的文件)
    [root@localhost /]# cat ett.txt
    1
    。。。(这里我手动省略98行)
    100

    [root@localhost /]# head -30 ett.txt|tail -11
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    [root@localhost /]# sed -n '20,30'p ett.txt
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# awk '19<NR&&NR<31' ett.txt  (&&俩边没空格也行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# awk '{if(NR<31 && NR>19) printf $0" "}' ett.txt
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# awk 'NR==31' ett.txt
    31

    [root@localhost /]# grep 20 -A 10 ett.txt  (匹配第20行,显示改行之后的10行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# grep 30 -B 10 ett.txt   (匹配第30行,显示改行之前的10行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost /]# grep 25 -C 5 ett.txt   (匹配第25行,然后再显示改行前后各5行)
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    #Context control:
    -A  #除了显示匹配的一行之外,并显示该行之后的num行。
    -B  #除了显示匹配的一行之外,并显示该行之前的num行。
    -C  #除了显示匹配的一行之外,并显示该行之前后各num行。
     

  • 相关阅读:
    如何在C#中获得input文本框中的值
    多控件时,自适应布局(dl dd td )
    jquery easyui DataGrid
    报表文本字段钻取使用超链接(URL)的用法 (转)
    rabbitMQ队列使用及常用命令
    java集合操作
    Java集合框架总结(4)——List接口的使用
    Java集合框架总结(3)——TreeSet类的排序问题
    Java HashMap 分析之二:Hash code
    Java HashMap 分析之四:查找和内存使用
  • 原文地址:https://www.cnblogs.com/sinsenliu/p/8932600.html
Copyright © 2020-2023  润新知