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

Shell:Day06.笔记的更多相关文章

  1. Learning The Bash Shell读书笔记(整理)

    最近搞了一本书 Learning Bash Shell,发现有人已经写了阅读笔记,我就在这边整理一下 来自blog:http://blog.sina.com.cn/n4mine Learning Th ...

  2. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  3. Shell编程笔记

    Shell编程笔记与Windows下熟悉的批处理类似,也可以将一些重复性的命令操作写成一个脚本方便处理.   修改别人的脚本,运行后遇到个问题 setenv: command not found 查证 ...

  4. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  5. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  6. python day06笔记总结

    2019.4.3 S21 day06笔记总结 一.昨日内容补充 1.列表独有功能: 1.revers 反转 例:v1 = [1,2,4,88,2] v1.revers() print(v1) 2.so ...

  7. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  8. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  9. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

随机推荐

  1. Django中ORM中的get与filter区别

    本文出自 “orangleliu笔记本” 博客,出处http://blog.csdn.net/orangleliu/article/details/38597593 Django的orm中get和fi ...

  2. S3C2440A特殊寄存器

    S3C2440A特殊寄存器 特殊寄存器有: 输入输出端口 存储器控制器 NANDFLASH 看门狗定时器 时钟和电源管理 PWM定时器 UART USB设备 中断控制器 DMA LCD控制器 RTC ...

  3. 记一次在新服务器上搭建lnmp的过程

    背景: 前不久阿里云在做活动,200+一台服务器三年,于是果断入手了一台. 今天有空就在服务器上把lnmp环境给装了,之前为了了解安装过程,在别的机器上尝试过单独安装nginx.mysql.php,虽 ...

  4. 普通索引和唯一索引如何选择(谈谈change buffer)

    假设有一张市民表(本篇只需要用其中的name和id_card字段,有兴趣的可以翻看“索引”篇,里面有建表语句) 每个人都有一个唯一的身份证号,且业务代码已经保证不会重复. 由于业务需求,市民需要按身份 ...

  5. 手把手构建LSTM的向前传播(Building a LSTM step by step)

      本篇是在之前两篇基础上接着写的: 吴恩达deepLearning.ai循环神经网络RNN学习笔记(理论篇) 从头构建循环神经网络RNN的向前传播(rnn in pure python) 也可以不看 ...

  6. 对tf.nn.softmax的理解

    对tf.nn.softmax的理解 转载自律者自由 最后发布于2018-10-31 16:39:40 阅读数 25096  收藏 展开 Softmax的含义:Softmax简单的说就是把一个N*1的向 ...

  7. Spring01——你应该了解的,有关 IOC 容器的一切

    从本文开始,将开始介绍关于 Spring 的一些常见知识点.关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点. 在如今的 Java Web 开发中,Spring ...

  8. 《2018面向对象程序设计(java)课程学习进度条》

     学习收获最大的程序阅读或编程任务    课堂/课余学习时间(小时)    发布博客/评论他人博客数量   (阅读/编写)代码行数        周次                  九九乘法表   ...

  9. spss绘制图形更改组距

    在绘制数据分布条形图时,要更改y轴的刻度很简单,直接在图形编辑窗口点击y轴修改就可以了. 而x轴的间隔自动设置为1,如果想要更改组距,可以按照以下方式: 点击重新编码为不同变量 选择要更改的变量,在[ ...

  10. 对于一个由0..n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。

    输入描述: 每组数据一行一个数字,为题目中的n(n小于等于1000). 输出描述: 一行输出最后剩下的数字.我的思路是用两个链表,一个用于存储原数据,一个用于存储要丢掉的数据,再循环从元数据中剔除掉即 ...