sed命令及免交互

目录

一、sed概述

二、sed基本用法

 1、命令格式

 2、选项

  3、语法

4、搜索替代

5、分组后向引用

 三、多行重定向

 四、免交互expect脚本


一、sed概述

    sed 命令和 vim 不同,sed是行编辑器,一行一行处理文件。从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到最后一行。 一次处理一行的设计模式使得sed性能很高,sed在读取大文件时不会出现卡顿的现象。如果使用vim命令打开几十M上百M的文件,明显会出现有卡顿的现象,这是因为vi命令打开文件是一次性将文件加载到内存,然后再打开。sed就避免了这种情况,一行一行的处理,打开速度非常快,执行速度也很快。

二、sed基本用法

 1、命令格式

sed  [选项]  '语法'    文件或标准输入或标准输出

 2、选项

 -n :关闭自动打印

 -r :使用拓展正则表达式

 -i :实际修改文件内容,-i.bak 表示在修改文件前先进行备份,产生一个 “源文件名.bak” 的文件

 sed命令及免交互_第1张图片

  3、语法

 '   ' 中的语法由地址和命令组成

 命令:

①p 手动打印,需要再前面加 -n选项

sed命令及免交互_第2张图片

 ②q 表示对应位置后提前退出

sed命令及免交互_第3张图片

 ③d 表示删除对应行

sed命令及免交互_第4张图片

 ④a 表示在指定行的后面追加文本

 例:sed  '3anihao' 123  表示在123文件第三行后面一行加上nihao

 ⑤i 表示在指定行的前面追加文本

例: sed  '3inihao' 123  表示在123文件第三行前面一行加上nihao

 ⑥c 表示替换指定行的内容

sed命令及免交互_第5张图片

⑦ = 等号表示显示行号

sed命令及免交互_第6张图片

4、搜索替代

 格式:范围  s/旧字符/新字符/修饰符

查找替换,支持使用其它分隔符,例如用@或者#替代/。修饰符g 表示行内全局替换,p 显示替换成功的行。

5、分组后向引用

  分组后向引用必须要用sed -r选项使用拓展正则表达式,其难点是用正则表达式表达整行想要的内容。

sed命令及免交互_第7张图片

sed命令及免交互_第8张图片

sed命令及免交互_第9张图片

sed命令及免交互_第10张图片

 三、多行重定向

   多行重定向是指使用I/O重定向的方式将命令列表提供给交互式程序,是标准输入的一种替代品。注意结尾标记前后不能有任何字符,空格也不行。

语法格式:

命令     <<标记     >文件

....

......

>标记

 sed命令及免交互_第11张图片

 sed命令及免交互_第12张图片

 四、免交互expect脚本

   expect是建立在tcl(tool command language)语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互的相关问题。

书写expect脚本的注意点:

 1、linux默认没有安装expect软件,要先使用yum安装

 2、脚本文件名不能以.sh 结尾,可以直接不加后缀名

 3、脚本中声明解释器要写#!/usr/bin/expect ,不是#!/bin/bash 

 4、spawn 后面跟上要执行的命令

 5、expect 用于捕捉关键字,关键字要用"  " 引起来

 6、最后的结束符分为两种,expect  eof 表示交互结束后,回到原用户;interact 表示交互结束后会保持在终端,不退回原终端;且两者只能二选一。

sed命令及免交互_第13张图片

sed命令及免交互_第14张图片

目录

一、sed概述

二、sed基本用法

 1、命令格式

 2、选项

  3、语法

4、搜索替代

5、分组后向引用

 三、多行重定向

 四、免交互expect脚本


你可能感兴趣的:(linux,运维,服务器)