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/bashcat << EOF菜  单============================"CPU)显示cpu信息""Mem)显示内存信息""Disk)显示磁盘信息""Quit)退出"============================EOFwhile true;doread -p "请输入需要查看的信息:" infoecho ""if [ -z $info ];thenecho "请输入一个正确的参数!!"echo "例如:CPU Mem Disk Quit"#       exit 1fiif [ $info = "cpu" ];thencat /proc/cpuinfoelif [ $info = "mem" ];thenfree -melif [ $info = "disk" ];thenfdisk -lelif [ $info = "quit" ];thenecho "已退出"exit  0elseecho "输入信息有误"echo "请输入一个正确的参数!!"echo "例如:CPU Mem Disk Quit"exit 2fidone

进度条

Vim .vimrc

编辑vim的一些默认参数

云桌面

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

  1. 安全
  2. 方便

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

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

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

数字,+N

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

转载于:https://www.cnblogs.com/KAJIA1/p/11392365.html

Shell-05 sed相关推荐

  1. [shell基础]——sed命令

    ---恢复内容开始--- 关于sed sed 是一种在线编辑器,它一次处理一行内容. 处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着 ...

  2. shell脚本——sed编辑器

    shell脚本--sed编辑器 一.sed编辑器 二.sed编辑器工作流程 三.sed命令格式 四.常用选项 五.常用操作 六.使用地址寻址 七.删除行 八.替换 九.插入 一.sed编辑器 sed是 ...

  3. shell之sed编辑器

    shell之sed编辑器 一.sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流 1.sed编辑器工作流程 sed编辑器可以根据命令来处理数据流中的数 ...

  4. shell编程——sed用法

    为什么80%的码农都做不了架构师?>>>    编辑文本通常可以使用vi,但是有时需要通过命令去编辑文件,这时就需要使用流编辑器sed 一.sed概述 sed(stream edit ...

  5. shell中sed命令的用法

    sed (stream editor)流编辑器也是linux中的一条命令,在shell中经常需要用到的非交互式修改文件内容的命令.sed处理文本是按行处理,也就是读一行处理一行. sed的命令基本格式 ...

  6. shell错误 sed: can't read : No such file or directory

    出现这样的问题主要是在于 空字符 造成的,情况分为3种 第一种是windows上的文件,在Linux上运行,这种可以通过查看文件编码确认,unix + utf-8 可以解决. 第二种是网页复制的she ...

  7. shell awk sed tr grep 语法汇总

    原文地址:http://www.cnblogs.com/wajika/p/6374043.html tr 基本语法 -c          # 用字符串1中字符集的补集替换此字符集,要求字符集为ASC ...

  8. shell中sed -i特殊字符

    可参考文献: Linux生产环境上,最常用的一套"sed"技巧 看懂shell中的各种语句

  9. linux sed名宁,Linux shell利用sed批量更改文件名的方法

    微子网络与大家分享了在Linux shell中使用sed批量更改文件名的方法.希望你看完这篇文章有所收获.大家一起讨论一下. 示例 去除特定字符 目标:把2017-01-01.jpg和2018-01- ...

  10. 【Shell】sed实例之第三部分

    强健的 sed 在第二篇 sed 文章中,我提供了一些示例来演示 sed 的工作原理,但是它们当中很少有示例能实际做特别有用的事.在这篇 sed 系列的最后文章中,我要改变那种方式,并使用 sed 来 ...

最新文章

  1. 一个简单的程序来使用WiredTiger 存储引擎
  2. json-lib 常用功能
  3. 关于ark取得进程的镜像文件路径
  4. Eclipse安装 Activiti Designer插件
  5. MySQL数据库乱码 - Linux下乱码问题解决
  6. boost::program_options模块一个配置ini文件被解析程序选项库,它包括许多不同的值类型的测试程序
  7. MySQL8权限,角色
  8. 23种设计模式之组合模式
  9. Python数据分析教程:Numpy 中不得不知的4个重要函数
  10. 那点房事(难以齿口)
  11. Tableau 网站流量分析案例汇总
  12. filp/whoops初体验
  13. 怎么修改图片为300dpi?如何在线修改分辨率?
  14. 【转】Web 设计中最常用的 10 种色调以及它们的示例
  15. audio标签无法自动循环播放问题
  16. WPF 基本控件的介绍
  17. 缓冲区溢出漏洞浅析(三)
  18. 装X与务实并存!iPad越狱必装插件汇总
  19. 小i机器人与腾讯、商汤等发起成立上海人工智能发展联盟
  20. 团队建设与高效管理--3(九型人格)

热门文章

  1. Web服务器、Servlet和Servlet容器
  2. ISA 2006 允许使用QQ
  3. python 鼠标键盘操作 pyautogui
  4. C++ 构造函数的初始化列表
  5. phpstudy php日志,phpstudy开启网站Apache日志并且按照日期划分创建
  6. Appium 命令行安装教程
  7. SQL Server全系列安装程序V1.2中文版
  8. Java包的命名规范
  9. Python SSH爆破以及Python3线程池控制线程数
  10. 用于改善质量、稳定性和多样性的可增长式GAN