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
  • 相关阅读:
    Linux下命令行解析
    L.append(a)、L+=[a]和L=L+[a]
    python的lambda表达式
    (转载)2012 EEPW ARM DIY功能扩展模块采买建议(ARM)(PCB)
    (转载)EEPW ARM DIY手记之软件设计(一)——MDK_ARM工程的搭建(ARM)(C)
    (转载)EEPW ARM DIY手记之软件设计(二)——LED跑马灯实验(ARM)(C)
    (转载)EEPW ARM DIY手记之硬件功夫(三)——硬件焊接功夫与硬件测试心得(ARM)(PCB)
    面向对象设计大作业第二阶段:图书馆查书、借书、还书
    C博客作业05指针
    DS博客作业04图
  • 原文地址:https://www.cnblogs.com/why098/p/11365499.html
Copyright © 2011-2022 走看看