• Shell-05 sed


    Shell-05

    sed命令

    Linux文本处理三剑客之sed语句(行编辑—流编辑器 stream editor)

    作为行编辑器对文本进行编辑,以行为单位

    注意:sed编辑文件,却不改变原文件;

    Sed的工作原理:

             在sed里面会提供一个地址空间,在linux的内存中会出现一个模式空间PATTERN SPACE,读取一行

     

    制定一个文本文件,依次读取文本文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(正则表达式),对匹配后的内容进行修改(替换、删除、打印、修改、保存)

    Sed的用法:

    sed [option] …{script-only-if-no-other-script} [input-file]

    sed [参数] … “sed自己独立的用法格式的语句” [文本文件]

    常见选项:

                              -r  指定使用扩展的正则表达式

                                       匹配IP地址

                             1.所有的都不要

                                   2.| 或者

    -n     拒绝默认输出

             sed -n ‘1,2p’ 99cfb.sh

    -e     script for while if

             for i in {1..9};do echo “$i” sleep 1;done

    -f      指定脚本文件

    -l      指定文本换行的长度

    -i   直接修改文件内容(不要使用)

    Sed命令的地址定界方式

    1. 直接匹配数值

    Sed -n ‘5,7p’ 99cfb.sh

    1. digit(数字)指定步长 d~步长

    sed -n ‘1~3s/j/@/p’ 99cfb.sh

    1. $ 指定行尾

    Sed -n ’10,$p’ 文件

                                       Sed -n ‘fd\,$p’ 文件-----匹配从fd到行尾

                  

    1. 0,addr ---addr 可以为数字/$/正则表达式
    2. Sed -n ‘0,/k{5,}/p’ abc
    3. Sed -n ‘/(as)+/,/(ds,)+/p’ abc
    4. addr,+N

    匹配addr行到,addr后N行

    Sed -n ‘/fd/,+5p’ abc

    1. addr,-N

    sed -n ‘1,~3p’ abc

    常见命令:

                      p print 打印 默认在屏幕上显示出来,建议与-n一起使用

                      c 替换行sed “/aaa/c A” 文件名

                      d 删除  sed “/aaa/d” 文件名   删除匹配到的行

                                       sed “1,3d” 文件名

                      n N 读取/添加 模式匹配到的行的下一行内容在对其进行操作

                      w 保存文件内容到一个新的文件

                      *s* 文本内容替换 默认替换模式空间匹配到的第一项内容

                                       g global 全部/全局

                                      

                                       语法格式:s/pattern/字符串/---中间的斜杠何以替换为任意一个特殊字符

                                        1 2 3…  和正则表达式的分组是相同的,实现反向应用

                                                         指定某一个匹配项进行修改替换

                               -第四行的第三个for替换成if

                            第四行的第三个for替换成if并保存到99xfb.sed.sh

                      i 在匹配行的上一行添加内容

                              sed “/for/i abc ” filename

                      a 在匹配行的下一行添加内容

                              sed “/for/a abc ” filename

        

       Grep “testbash” /etc/passwd | Sed “s#^test.*#&er#g”

     

     

    例如s###、s@@@、s%%%

    sed “s/k/K/gw  /root/aabbcc” abc

    sed的高级应用             

    D  hold space—占有空间

                     

    随机数

                      RANDOM  范围0-32767

                      A=$[$RANDOM%100+1]

             练习:

     

    1. cat /boot/grub/grub.conf        sed  ‘s/^[[:space:]]+//g’ /boot/grub/grub.conf
    2. cat /etc/fstab               sed ‘s/^#[[:space:]]+//’ /etc/fstab
    3.  echo “/var/log/message | ”sed  ‘s/[^/]+$//’
    4. echo "/var/log/message" | sed  's#^/.*/##'

    取出文件路径的路径部分----dirname

    取出文件路径的文件部分----basename

     

    死循环

    while true;do

                  循环体

    done

    break—打断跳出循环

    continue----跳出本次循环

    sleep----延长多长时间后,继续执行循环

    until

           与while用法相同

           区别:只有判断条件为false的时候,才会进入循环语句

    练习2:

     

    #!/bin/bash
    
    cat << EOF
    
             菜  单
    
    ============================
    
       "CPU)显示cpu信息"
    
       "Mem)显示内存信息"
    
       "Disk)显示磁盘信息"
    
       "Quit)退出"
    
    ============================
    
    EOF
    
     
    
    while true;do
    
           read -p "请输入需要查看的信息:" info
    
           echo ""
    
           if [ -z $info ];then
    
                  echo "请输入一个正确的参数!!"
    
                  echo "例如:CPU Mem Disk Quit"
    
            #       exit 1
    
           fi
    
           if [ $info = "cpu" ];then
    
                  cat /proc/cpuinfo
    
           elif [ $info = "mem" ];then
    
                  free -m
    
           elif [ $info = "disk" ];then
    
                  fdisk -l
    
           elif [ $info = "quit" ];then
    
                  echo "已退出"
    
                  exit  0
    
           else
    
                  echo "输入信息有误"
    
                  echo "请输入一个正确的参数!!"
    
                 echo "例如:CPU Mem Disk Quit"
    
                  exit 2
    
           fi
    
    done

     

    进度条

     

    Vim .vimrc

    编辑vim的一些默认参数

     

    云桌面

    作用:给客户从云端分配PC机,让客户在云端办公;

    1. 安全
    2. 方便

    【在vim中,“.”代表光标所在当前行:“.,$s/^/#/-----从光标所在当前行到行尾的开头替换成#”】

    1~3 1,4,7,11----步长

    /pattern1/,/pattern2----从模式1匹配到的行,到模式2匹配到的行1

    数字,+N

    /pattern1/,+N------".,+3s/^#//” 从光标所在当前行到后三行的开头替换成空

     

  • 相关阅读:
    DevExpress GridControl使用方法
    DevExpress中,添加Winform窗体到DockPanel z
    取消默认 $ 定义
    五角星效果实现
    jquery的each函数的用法
    Object类型转换为long或者Long
    easyui datagrid 列排序
    redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value
    DIV元素不换行
    JS 中div内容的显示和隐藏
  • 原文地址:https://www.cnblogs.com/KAJIA1/p/11392365.html
Copyright © 2020-2023  润新知