• 网络安全学习:系统文本编辑命令


    [#####成功在于你坚持了别人坚持不了的东西####]

    1.1 系统基本编辑命令

    vi是Linux命令行界面下的重要文字编辑器。vim是vi命令的增强版,例如高亮显示代码、自动缩进等。

    语法格式:

    vim [option] [file]
    vim 选项         文件
    
    • 1
    • 2

    提前安装vim软件工具包

    [root@xiaoQ ~]# yum install -y vim
    
    • 1

    说明:默认centos7系统中可能没有vim命令,需要通过命令方式安装vim

    1.1.1 编辑命令模式概念介绍

    vim分为三种模式:普通模式、编辑模式、命令模式,起作用分别如下:

    普通模式:
    用vim命令打开一个文件后,默认的状态就是普通模式。

    在这个模式中,不能进行编辑输入操作,但可以移动光标,同时还可以执行一些操作命令进行如删除、复制、粘贴等工作。

    编辑模式:
    在普通模式下不能进行编辑,只有按下“i,I,o,O,a,A,r,R,s,S”等字母进入编辑模式后才可以执行编辑操作。

    确定文件是否处于编辑模式状态有一个重要的特征,那就是在窗口的左下角要有插入的标记

    在这里插入图片描述

    命令模式:
    在普通模式下,输入”:” 或 “/” 或 “?” 时,光标会自动定位在最底行。

    在这个模式中,可以执行保存、退出、搜索、显示行号等相关操作。

    总结说明:三种工作模式的切换关系

    在这里插入图片描述

    文件编辑基本操作步骤:

    打开需要编辑文件:

    [root@xiaoQ ~]# vim xiaoQ.txt
    
    • 1

    进行文件信息编辑:

    首先进入编辑模式,输入小写字母 i --> insert,开始进行文件编辑

    在这里插入图片描述
    在这里插入图片描述

    结束文件编辑操作:

    首先在编辑模式状态输入esc,然后在普通模式状态输入:进入命令模式,再输入wq实现文件保存退出

    在这里插入图片描述

    说明:在利用vim编辑文件过程中,要注意系统的输入法状态不能是中文状态。

    1.1.2 编辑命令常用快捷参数

    vi/vim编辑命令在使用的过程中,也会用到一些快捷方式,实现对文件编辑的操作高效性。

    普通模式:移动光标的操作
    大写字母G 将光标移动到文件的最后一行
    gg 将光标移动到文件的第一行,等价于1gg或1G
    0 数字0,将光标从所在位置移动到当前行的开头
    $ 从光标所在位置将光标移动到当前行的结尾
    ngg/nG n为数字,移动到文件的第n行,可配合:set nu进行查看
    进入编辑模式命令
    i 在当前光标所在处插入文字
    I 在当前所在行的行首的第一个非空格符处开始插入文字,与A相反
    a 在当前光标所在处的下一个字符处插入文字
    A 在当前所在行的行尾的最后一个字符处开始插入文字,与I相反
    o 在当前所在行的下一行处插入新的一行
    O 在当前所在行的上一行处插入新的一行
    C 删除光标所在位置到行尾内容进入编辑状态
    cc 清空当前行的所有内容信息并进入编辑状态
    普通模式:复制、粘贴、删除
    yy 复制光标所在的当前行
    nyy n为数字,复制光标开始向下共n行
    p/P p将已复制的数据粘贴到光标的下一行,P则为粘贴到光标的上一行
    dd 删除(剪切)光标所在的当前行
    ndd n为数字,删除从光标开始向下共n行
    d1G 删除当前行至第一行
    dG 删除当前行至最后一行
    d0 删除当前光标文本至行首
    d$ 删除当前光标文本至行尾
    普通模式:搜索、替换、撤销
    /xiaoQ 从光标位置开始,向下寻找名为xiaoQ的字符串
    ?xiaoQ 从光标位置开始,向上寻找名为xiaoQ的字符串
    /xiaoQ\c 从光标位置开始,向下寻找名为xiaoQ的字符串,并且忽略大小写
    n 从光标位置开始,向下重复前一个搜索的动作
    N 从光标位置开始,向上重复前一个搜索的动作
    :n1,n2s/A/B/g n1,n2为数字,在第n1行和n2行间寻找A并替换为B
    :%s#A#B#g 将符合A的内容全部替换为B,斜线为分隔符,可以用@、#等替代
    u 恢复前一个执行过的操作(进行操作撤销)
    ctrl+r 恢复前一个撤销过的操作(取消操作撤销)
    命令行模式:
    :wq 退出并保存
    :wq! 退出并强制保存,“!”为强制的意思
    :q! 强制退出,不保存
    :set nu 显示行号
    :set nonu 与set nu相反,取消行号
    :n1,n2moven3 将文件第n1行到第n2行移动到第n3行
    :n1,n2copyn3 将文件第n1行到第n2行复制到第n3行
    :set ic 开启忽略大小写字母的查找功能
    :set noic 取消忽略大小写字母的查找功能
    :noh 取消搜索信息高亮效果
    :set list 显示行尾标识信息,以及部分特殊标记信息

    说明:配置文件信息一致,也有可能含有特殊隐藏符号信息影响系统服务加载,最好直接在linux系统中编辑

    1.1.3 企业编辑文件技巧说明

    实际操作情况-01:批量删除多行指定信息

    进入批量编辑模式 ctrl + v 可视块
    进行批量删除操作 d 或者 x
    
    • 1
    • 2

    实际操作情况-02:批量增加多列指定信息

    进入批量编辑模式 ctrl + v 可视块
    选择批量编辑区域 利用方向键
    进入插入编辑模式 大写字母 I 或者 shift + i
    开始编辑内容信息
    退出批量编辑操作 按键盘 esc
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    1.1.4 编辑操作常见异常情况

    常见错误-01:需要指定编辑信息

    [root@xiaoQ ~]# vim 
    ~                                        VIM - Vi IMproved                                         
    ~                                                                                                  
    ~                                          version 7.4.629                                          
    ~                                    by Bram Moolenaar et al.                                      
    ~                                Modified by <bugzilla@redhat.com>                                 
    ~                           Vim is open source and freely distributable                            
    ~                                                                                                  
    ~                                  Help poor children in Uganda!                                   
    ~                         type  :help iccf<Enter>       for information                            
    ~                                                                                                  
    ~                         type  :q<Enter>               to exit                                    
    ~                         type  :help<Enter>  or  <F1>  for on-line help                           
    ~                         type  :help version7<Enter>   for version info
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    常见错误-02:编辑路径必须存在

    "/xiaoQ/xiaoQ01/xiaoQ.txt"                                                       
    "/xiaoQ/xiaoQ01/xiaoQ.txt" E212: Can't open file for writing
    Press ENTER or type command to continue
    
    • 1
    • 2
    • 3

    说明:以上提示错误信息,表示编辑的文件对应路径信息不存在。

    提示:基础不牢地动山摇。

    常见错误-03:编辑出现异常中断

    在这里插入图片描述

    异常问题解决处理办法:

    恢复临时文件信息方法

    vi -r 需要编辑文件

    显示临时文件信息方法

    vi -r/-L

    取消生成临时文件方法

    vi -n 需要编辑文件

    vim命令进行编辑文件时:

    编辑指定文件信息,输入字母R,表示恢复临时文件中原有内容

    利用命令查看文件内容是否正常

    删除原有文件的临时文件

    利用rm命令删除指定的临时文件/利用快捷方式字母D删除指定的临时文件

    1.2 文件编辑命令扩展

    1.2.1 文件编辑命令扩展-echo

    echo命令能将指定文本显示在Linux命令行上,或者通过重定向符写入到指定的文件中。

    语法格式:

    echo [option] [string]
    echo    [选项]   [文本]
    常用参数:
    
    • 1
    • 2
    • 3

    -n 不要自动换行
    -E 不解析转义字符(默认参数)
    -e 若字符串中出现以下字符,则需要进行特别处理,而不会将它当成一般文字输出
    \a:发出警告声
    \b:删除前一个字符
    \c:最后不加上换行符号
    \f:换行但光标仍旧停留在原来的位置
    \n:换行且光标移至行首
    \r:光标移至行首,但不换行
    \t:插入tab

    实践操作:

    实践操作-01:使用-n参数实现不换行功能

    [root@xiaoQ ~]# echo "xiaoQ01";echo "xiaoQ02"
    xiaoQ01
    xiaoQ02
    [root@xiaoQ ~]# echo -n "xiaoQ01";echo "xiaoQ02"
    xiaoQ01xiaoQ02
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实践操作-02:打印输出信息到屏幕上

    [root@xiaoQ ~]# echo xiaoQ Linux
    xiaoQ Linux
    [root@xiaoQ ~]# echo "xiaoQ Linux"
    xiaoQ Linux
    [root@xiaoQ ~]# echo 'xiaoQ Linux'
    xiaoQ Linux
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实践操作-03:打印输出信息使用转义符号

    最后不加上换行符:\c

    [root@xiaoQ ~]# echo  "xiaoQ"
    xiaoQ
    [root@xiaoQ ~]# echo -e  "xiaoQ\c"
    xiaoQ[root@xiaoQ ~]# 
    
    • 1
    • 2
    • 3
    • 4

    换行且光标移至行首:\n

    [root@xiaoQ ~]# echo   "xiaoQ01xiaoQ02"
    xiaoQ01xiaoQ02
    [root@xiaoQ ~]# echo -e  "xiaoQ01\nxiaoQ02"
    xiaoQ01
    xiaoQ02
    [root@xiaoQ ~]# echo -e  "xiaoQ01\rxiaoQ02"
    xiaoQ02
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    插入制表符使信息显示整齐:\t

    [root@xiaoQ ~]# echo -e "01 Linux xiaoQ01\n02 python xiaoQ02\n03 mysql xiaoQ03"
    01 Linux xiaoQ01
    02 python xiaoQ02
    03 mysql xiaoQ03
    [root@xiaoQ ~]# echo -e "01\tLinux\txiaoQ01\n02\tpython\txiaoQ02\n03\tmysql\txiaoQ03"
    01  Linux   xiaoQ01
    02  python  xiaoQ02
    03  mysql   xiaoQ03
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    实践操作-04:将输出信息写入到指定文件中

    将输出内容覆盖重定向到指定文件中

    [root@xiaoQ ~]# cat xiaoQ.txt 
    xiao01
    xiao02
    [root@xiaoQ ~]# echo "xiaoQ" > xiaoQ.txt
    [root@xiaoQ ~]# cat xiaoQ.txt 
    xiaoQ
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    将输出内容追加重定向到指定文件中

    [root@xiaoQ ~]# cat xiaoQ.txt 
    xiaoQ01
    xiaoQ02
    [root@xiaoQ ~]# echo xiaoQ03 >> xiaoQ.txt 
    [root@xiaoQ ~]# echo xiaoQ04>>xiaoQ.txt 
    [root@xiaoQ ~]# cat xiaoQ.txt 
    xiaoQ01
    xiaoQ02
    xiaoQ03
    xiaoQ04
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    说明:>>/>表示重定向符号信息,可以用于在命令执行后输出到屏幕的信息存入到指定文件中。

    1.2.2 文件编辑命令扩展-cat

    cat命令可以理解为英文单词concatenate的缩写,其功能是连接多个文件并且打印到屏幕输出。

    此命令常用于显示单个文件内容,或者将几个文件内容连接起来一起显示。

    还可以从标准输入中读取内容并显示,生产环境中,它常与重定向或追加符号配合使用。

    语法格式:

    cat [option] [file]
    cat  选项     文件
    
    • 1
    • 2

    常用参数:

    -n 从第一行开始对所有输出的内容按行编号
    -b 与-n选项功能类似,但忽略显示空白行行号
    -s 当遇到有连续的两行以上的空白行,就替换为一行空白行
    -E 在每一行的行尾显示$符号

    实践操作:

    实践操作-01:实现文件多行信息内容的编辑操作

    使用> 或 >>主要区别在于是否覆盖还是追加新的的内容

    [root@xiaoQ ~]# cat > test.txt << EOF
    > welcome to my Linux class, my name xiaoQ.
    > 
    > if you like my class, pls support me.
    > 
    > bye boys and girls
    > EOF
    [root@xiaoQ ~]# cat test.txt 
    welcome to my Linux class, my name xiaoQ.if you like my class, pls support me.
    ​
    bye boys and girls
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    实践操作-02:实现联合多个文件信息并重定向指定文件中

    [root@xiaoQ ~]# cat xiaoQ01.txt 
    xiaoQ01
    [root@xiaoQ ~]# cat xiaoQ02.txt 
    xiaoQ02
    [root@xiaoQ ~]# cat xiaoQ01.txt  xiaoQ02.txt  > xiaoQ03.txt
    [root@xiaoQ ~]# cat xiaoQ03.txt 
    xiaoQ01
    xiaoQ02
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    实践操作-03:实现对指定文件内容进行清理操作

    [root@xiaoQ ~]# cat xiaoQ03.txt 
    xiaoQ01
    xiaoQ02
    [root@xiaoQ ~]# cat /dev/null > xiaoQ03.txt 
    [root@xiaoQ ~]# cat xiaoQ03.txt 
    [root@xiaoQ ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    功能总结:

    查看文件内容 例如:cat file.txt,这是cat最基本的功能之一
    把多个文件合并成一个 例如:cat file1.txt file2.txt >newfile.txt
    非交互式地编辑或追加内容到文件尾部 这是生产工作中最重要的一个应用:

    cat >> file1.txt << EOF
    I am xiaoQ Linux teacher.
    EOF
    
    • 1
    • 2
    • 3

    清空文件内容 例如:使用cat /dev/null > file1.txt命令就可以将文件内容清空,但文件还是存在的,这个功能在生产工作中也会用到。

    1.3 文件查看命令扩展

    1.3.1 文件查看命令扩展-more

    more命令的功能类似于cat,但cat命令是将整个文件的内容一次性显示在屏幕上

    而more则会一页一页地显示文件内容。

    语法格式:

    more [option] [file]
    more  选项        文件
    
    • 1
    • 2

    功能参数:

    -num 指定屏幕显示大小为num行
    +num 从行号num开始显示
    Enter 向下显示1行
    空格键 向下滚动一屏
    b 返回上一屏
    = 输出当前行的行号
    /查找的文本 查找指定文本
    v 调用vi编辑器
    q 退出more查看状态

    实践操作:

    实践操作-01:执行more命令,后面不接任何参数

    若不接任何参数,则会满屏显示文件内容

    [root@xiaoQ ~]# more /etc/services 
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #xiaoQ
    #xiaoQ
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    -- more --  (0%)
    操作人员可以在上面饿交互界面测试常用的功能,比如按空格键往下翻一屏。按 b 往上翻一屏;
    
    若想查找 3306,则先输入一个 / ,然后输入 3306 敲回车即可找到。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    实践操作-02:只查看指定几行信息

    [root@xiaoQ ~]# more -2 /etc/services 
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    --More--(0%)
     
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实践操作-03:只查看指定行之后的内容信息

    [root@xiaoQ ~]# more +666 -3 /etc/services 
    tacnews         98/tcp                  # TAC News
    tacnews         98/udp                  # TAC News
    metagram        99/tcp                  # Metagram Relay
    --More--(5%)
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.3.2 文件编辑命令扩展-less

    less命令的基本功能类似于more命令,可以分页显示文件内容,但比more的功能更强大。

    less命令在读取文件内容时,不需要一次性将整个文件加载之后再显示,而是会根据需要来加载文件内容。

    并且less命令支持[page up] [page down]等按键功能,便于查看文件的内容。

    语法格式:

    less [option] [file]
    less    选项      文件
    
    • 1
    • 2

    选项参数:

    -i 搜索时忽略大小写
    -m 显示类似于more命令的进度百分比
    -N 显示每行的行号
    -s 将连续空行压缩为一行显示
    -e 当文件显示到结尾时自动退出文件,若不使用此选项则需要使用交互命令q退出less
    交互操作:

    在交互模式下,less命令也是基于more命令和vi命令的。

    序号 子命令 解释说明
    b 向前翻一页
    空格键 向后翻一页
    方向键 ↑ 向上滚一行
    方向键 ↓/回车键 向下滚一行
    /字符串 向下搜索字符串
    ?字符串 向上搜索字符串
    n 向后查找下一个匹配的文本
    N 向前查找前一个匹配的文本
    v 进入vi编辑界面
    G 移动到最后一行
    gg 移动到第一行
    h 显示帮助界面
    q 退出less命令

    实践操作:

    实践操作-01:通过less命令查看文件

    [root@xiaoQ ~]# less /etc/services 
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #xiaoQ
    #xiaoQ
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    #
    # Note that it is presently the policy of IANA to assign a single well-known
    # port number for both TCP and UDP; hence, most entries here have two entries
    # even if the protocol doesn't support UDP operations.
    /etc/services
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    实践操作-02:显示行号方法

    [root@xiaoQ ~]# less -N /etc/services 
          1 # /etc/services:
          2 # $Id: services,v 1.55 2013/04/14 ovasik Exp $
          3 #xiaoQ
          4 #xiaoQ
          5 # Network services, Internet style
          6 # IANA services version: last updated 2013-04-10
          7 #
          8 # Note that it is presently the policy of IANA to a      8 ssign a single well-known
          9 # port number for both TCP and UDP; hence, most ent      9 ries here have two entries
         10 # even if the protocol doesn't support UDP operatio/etc/services
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1.3.3 文件编辑命令扩展-head

    head命令用于显示文件头部的内容,执行head命令默认会输出文件的开头10行内容。

    语法格式:

    head [option] [file]
    head  选项       文件
    
    • 1
    • 2

    选项参数:

    -n<行数> 指定显示的行数
    -c<字节数> 指定显示的字节数
    -q 不显示包含给定文件名的文件头
    -v 总是显示包含给定文件名的文件头

    实践操作:

    实践操作-01:显示文件的指定前几行

    [root@xiaoQ ~]# head -n 5 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    ​
    [root@xiaoQ ~]# head -5 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    实践操作-02:显示文件的前几个字节

    [root@xiaoQ ~]# head -c 5 /etc/passwd
    root:[root@xiaoQ ~]#
    
    • 1
    • 2

    实践操作-03: 显示文件除最后几行之外的内容

    [root@xiaoQ ~]# cat > test.txt << EOF
    > xiaoQ01
    > xiaoQ02
    > xiaoQ03
    > xiaoQ04
    > xiaoQ05
    > EOF
    [root@xiaoQ ~]# head -n -2 test.txt 
    xiaoQ01
    xiaoQ02
    xiaoQ03
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1.3.4 文件编辑命令扩展-tail

    tail命令用于显示文件尾部的内容,tail命令默认输出文件的最后10行。

    语法格式:

    tail [option] [file]
    tail    选项      文件
    
    • 1
    • 2

    选项说明:

    -c<数目> 指定显示的字节数
    -n<行数> 指定显示的行数
    -f 实时输出文件变化后的追加的数据
    -F 功能等同于 -f --retry
    -retry 不停尝试打开文件直到打开为止,与-f参数合用
    –pid=进程号 与-f参数连用,在进程结束后自动退出tail命令
    -s秒数N 监视文件变化的间隔秒数
    -q 不显示包含给定文件名的文件头
    -v 总是显示包含给定文件名的文件头

    实践操作:

    实践操作-01:显示文件指定最后几行内容

    [root@xiaoQ ~]# cat test.txt 
    xiaoQ01
    xiaoQ02
    xiaoQ03
    xiaoQ04
    xiaoQ05
    [root@xiaoQ ~]# tail -n 3 test.txt 
    xiaoQ03
    xiaoQ04
    xiaoQ05
    [root@xiaoQ ~]# tail -3 test.txt 
    xiaoQ03
    xiaoQ04
    xiaoQ05
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    实践操作-02:从第几行开始显示文件内容

    [root@xiaoQ ~]# tail -n +2 test.txt 
    xiaoQ02
    xiaoQ03
    xiaoQ04
    xiaoQ05
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实践操作-03:通过tail命令实时监控文件的变化 重点

    说明:为什么要实时监控文件变化?

    主要用于监控日志文件信息,可以便于排查系统或服务程序的问题

    [root@xiaoQ ~]# tail -f /var/log/messages
    Dec  2 21:51:13 xiaoQ chronyd[863]: Source 193.182.111.141 online
    Dec  2 21:51:13 xiaoQ chronyd[863]: Source 94.130.49.186 online
    Dec  2 21:51:13 xiaoQ chronyd[863]: Source 202.118.1.130 online
    Dec  2 21:51:13 xiaoQ nm-dispatcher: req:4 'connectivity-change': start running ordered scripts...
    Dec  2 21:53:24 xiaoQ systemd: Started Session 67 of user root.
    Dec  2 21:53:24 xiaoQ systemd-logind: New session 67 of user root.
    Dec  2 21:54:27 xiaoQ chronyd[863]: Selected source 202.118.1.130
    Dec  2 21:54:27 xiaoQ chronyd[863]: System clock wrong by 3.146883 seconds, adjustment started
    Dec  2 21:56:36 xiaoQ chronyd[863]: Source 94.130.49.186 replaced with 162.159.200.1
    Dec  2 22:01:01 xiaoQ systemd: Started Session 68 of user root.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    思考:tail -F tail -f tailf这三种追踪日志信息的方法有什么区别。
    
    • 1

    1.4 文本数据处理命令

    1.4.1 文本数据处理命令-grep

    grep命令是linux系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据,

    如果配合正则表达式一起使用,功能会更加强大;此命令是Linux运维人员必须掌握的命令之一。

    grep过滤就相当于是一个筛子,有可能筛子里面的东西是保留的,也有可能是筛出来的需要保留。

    语法格式:

    grep [option] [pattern] [file]
              选项        匹配模式   文件
    
    • 1
    • 2

    grep命令里面的匹配模式,就是你要获取的内容,既可以是普通的文字符号也可以是正则表达式。

    选项参数:

    -v 显示不匹配的行,或者也就是排除某些行,显示其他行信息
    -n 显示匹配的行及行号
    -i 不区分大小写,默认是区分大小写的
    -c 只统计匹配的行数,注意不是匹配的次数
    -w 以单词为单位进行过滤
    -o 只输出匹配的内容

    实践操作:

    实践操作-01:使用grep过滤不包含xiaoQ字符串的行(-v参数实践)

    [root@xiaoQ ~]# cat grep_test.txt 
    test
    xiaoQ
    xiaoT
    [root@xiaoQ ~]# grep -v "xiaoQ" grep_test.txt 
    test
    xiaoT
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实践操作-02:使用grep命令显示过滤后的内容的行号(-n参数实践)

    [root@xiaoQ ~]# cat grep_test.txt 
    test
    xiaoQ
    xiaoQ Linux
    xiaoT
    [root@xiaoQ ~]# grep -n "xiaoQ" grep_test.txt 
    2:xiaoQ
    3:xiaoQ Linux
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    实践操作-03:使用grep命令不区分大小写进行过滤(-i参数实践)

    [root@xiaoQ ~]# cat grep_test.txt 
    test
    xiaoQ
    xiaoQ Linux
    XiaoQ
    xiaoT
    [root@xiaoQ ~]# grep  "xiaoQ" grep_test.txt 
    xiaoQ
    xiaoQ Linux
    [root@xiaoQ ~]# grep -i "xiaoQ" grep_test.txt 
    xiaoQ
    xiaoQ Linux
    XiaoQ
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    实践操作-04:计算匹配的字符串的数量(-c参数实践)

    [root@xiaoQ ~]# cat grep_test.txt 
    test
    xiaoQ
    xiaoQ Linux
    xiaoQ xiaoQ
    xiaoT
    [root@xiaoQ ~]# grep -c "xiaoQ" grep_test.txt 
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    实践操作-05:只输出匹配的内容(-o参数实践)

    [root@xiaoQ ~]# cat grep_test.txt 
    test
    xiaoQ
    xiaoQ Linux
    xiaoQ xiaoQ
    xiaoT
    [root@xiaoQ ~]# grep  "xiaoQ" grep_test.txt 
    xiaoQ
    xiaoQ Linux
    xiaoQ xiaoQ
    [root@xiaoQ ~]# grep -o "xiaoQ" grep_test.txt 
    xiaoQ
    xiaoQ
    xiaoQ
    xiaoQ
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    实践操作-06:利用grep搜索符合要求的用户(-w参数实践)

    [root@xiaoQ ~]# cat test.txt 
    张三     男  爱好女
    张三丰  男  爱好太极
    [root@xiaoQ ~]# grep "张三" test.txt 
    张三     男  爱好女
    张三丰  男  爱好太极
    [root@xiaoQ ~]# grep -w "张三" test.txt 
    张三    男  爱好女
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.4.2 文本数据处理命令-tr

    tr命令可以读取数据信息进行替换,缩减或者删除字符,并将结果显示输出出来。

    语法格式:

    tr [option] [SET1] [SET2]
    tr    选项      字符1    字符2
    
    • 1
    • 2

    选项参数:

    d 删除字符 ※
    -s 保留连续字符的第一个字符,删除其他字符
    -c 使用第一个字符串(set1)的补集,取反

    实践操作:

    实践操作-01:将文件中出现的“abc”替换为 “xyz”

    [root@xiaoQ ~]# cat tr_test.txt 
    I am xiaoQ teacher!
    I teach Linux.
    I like read book.
    [root@xiaoQ ~]# tr "teach" "12345" tr_test.txt 
    tr: extra operand ‘tr_test.txt’
    Try 'tr --help' for more information.
    [root@xiaoQ ~]# tr "teach" "12345" < tr_test.txt 
    I 3m xi3oQ 123452r!
    I 12345 Linux.
    I lik2 r23d book.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    说明:tr命令读取文件内容需要用到标准输入重定向符号<, 并且tr替换信息是按照字符1对1进行替换的。

    实践操作-02:将文件中出现的xiaoQ过滤掉,不做输出显示

    [root@xiaoQ ~]# tr -d "xiaoQ" < tr_test.txt 
    I m  techer!
    I tech Lnu.
    I lke red bk.
    
    • 1
    • 2
    • 3
    • 4

    说明:在特定场景下,利用tr命令可以对指定字符进行有针对的操作处理。

    如有侵权,请联系删除!

  • 相关阅读:
    Node.js之async 和 await 关键字及微任务和宏任务
    阿里P8肝了30天整理的10W字Java面试总结,涵盖26个技术栈,太全了
    Java 注解及其底层原理
    halcon知识:区域(Region)上的轮廓算子(2)
    element ui tree树形控件实现单选操作
    引用
    第六章 数学(二)
    安装facebook/wdt备忘
    【音视频 | Ogg】libogg库详细介绍以及使用——附带libogg库解析.opus文件的C源码
    python函数运行加速
  • 原文地址:https://blog.csdn.net/weixin_44202489/article/details/126108293