zoukankan      html  css  js  c++  java
  • Shell:Day06.笔记

    sed命令
     Linux文本处理三剑客 之 sed
     sed stream EDite
      作为行编辑器,对文本进行编辑(以行为单位进行编辑)
      注意:sed编辑文件,却不改变原文件;
     
     sed的工作原理:
      指定一个文本文件,依次读取文本文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(正则表达式),对匹配后的内容进行修改(替换、删除、打印、修改、保存等)
     用法:
      sed [OPTION]... {script-only-if-no-other-script} [input-file]...
      sed [参数] “sed自己独立的用法格式的语句”[文本文件]
     常见选项
      -n 拒绝默认显示
      -r  指定使用扩展的正则表达式
       匹配IP
       1、所有的 都不要 2、 | 或者
      -e script   for while if
      -f 指定脚本文件
      -l  指定文本换行的长度?
      -i  直接修改文件内容(不要使用)
      
     地址定界方式
      1、直接匹配数值
       sed -n '5p' 文件
      2、 d~步长      
       sed -n '1~3p' 文件
      3、$  指定行尾
       sed -n '10,$p' 文件
      4、/正则/
           /正则1/,/正则2/
       sed -n '/k{5,}/,$p' abc
       sed -n '/(fd)+/,+2p' abc  ? 正则写在前面就没有问题,写在后面就有问题
       sed -n '
      5、0,addr
       addr 可以为 数字/$/正则表达式
       sed -n '0,/k{5,}/p' abc
      6、addr,+N   
       配置addr行到,addr后N行
       sed -n '/fd/,+5p' abc
     **常见命令
      p  print  打印(默认在屏幕上显示出来) 建议和 -n 一起使用;
      c  替换
       sed "/aaa/c A" a
      d 删除
       sed "/aaa/d" a
       sed "1,3d" a
      n N  读取/添加  模式匹配到的行的下一行内容,再对其进行操作
      w 保存文件内容到一个新的文件
       sed "/patthen/w 新的文件名" 原来的文件名
       sed "/k/w /tmp/aabbcc" abc
      *s*  文本内容替换,默认替换模式空间匹配到的第一项;
       语法格式: s/pattern/字符串/
        中间的 / 可以替换为任意一个特殊字符 例如:s### s@@@ s%%%%
       g   全部
       1 2   和正则表达式的分组相同,实现反向应用;
        指定某一个匹配项进行修改替换
       &  调用前面(pattern)匹配的内容
        sed "s/r..t/&er/g" 文件
       w
       p
        
     sed的高级应用
      模式空间  --  hold space"占有空间"
      以后自己取学习
     练习:
     删除/boot/grub/grub.conf文件中所有空白开头的行行首的空白字符;
      sed 's/^[[:space:]]+//g' /boot/grub/grub.conf
     删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行   的行首的#和空白字符;
      sed 's/^#[[:space:]]+//g' /etc/fstab
     给定一个目录,取出其目录名
      echo "/etc/passwd"  |  sed 's/[^/]+$//'
     给定一个目录,取出其文件名
      echo "/etc/passwd" | sed 's#^/.*/(.*)##
     /var/log/message   
      sed '/[^/]+/'
      
      dirname --  取出文件路径的路径部分
      basename  --  取出文件路径的文件名部分
     
     
     
    case while until
    for
     for 变量 in 列表;do
      循环体
     done
     
     for((初始语句; 判断语句; 值变化语句)); do
      循环体
     done
    case
     分支
     case 变量 in
     PAT1)
      执行语句
      ;;
     PAT2)
      执行语句
      ;;
     *)
      默认执行语句
      ;;
     esac
    while
     循环
     格式:
     定义初始值
     while 条件判断 ; do
      循环体
      值变化语句
     done
     其他两种特殊的语句格式:
     for i in $(cat /etc/passwd &> /dev/null)   错误写法
     
     while read 变量;do
      循环体($变量)
     done << /path/filename
     就是任性 -- 要写死循环
     while true ; do
      循环体
     done
     
     break 跳出循环
     continue 跳出本次循环
     sleep 延长多长时间后,继续向下执行命令
    until
     循环
     与 while 用法想用
     区别:只有 判断条件为 False 的时候,才会进入循环语句;
     。。
    if
     if 条件判断 ;then
      执行语句
     fi
     
     if 条件判断 ;then
      执行语句1
     else
      执行语句2
     fi
     
     if 条件判断; then
      执行语句1
     elif 条件判断 ; then
      执行语句2
     elif  条件判断 ; then 
       执行语句3
     else
      执行语句4
     fi
  • 相关阅读:
    LeetCode 811. Subdomain Visit Count (子域名访问计数)
    LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
    LeetCode 939. Minimum Area Rectangle (最小面积矩形)
    LeetCode 781. Rabbits in Forest (森林中的兔子)
    LeetCode 739. Daily Temperatures (每日温度)
    三种方式实现按钮的点击事件
    239. Sliding Window Maximum
    14.TCP的坚持定时器和保活定时器
    13.TCP的超时与重传
    12.TCP的成块数据流
  • 原文地址:https://www.cnblogs.com/why098/p/11365499.html
Copyright © 2011-2022 走看看