文本三级剑客之sed

Stream EDitor, 行编辑器

  • sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
  • 功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
  • 参考: http://www.gnu.org/software/sed/manual/sed.html

sed工具

用法:

  • sed [option]... 'script' inputfile...

常用选项:

  • -n 不输出模式空间内容到屏幕,即不自动打印
  • -e 多点编辑
  • -f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本
  • -r 支持使用扩展正则表达式
  • -i.bak 备份文件并原处编辑

script:

  • '地址命令'

地址定界:

  1. 不给地址:对全文进行处理
  2. 单地址:
    • #:指定的行,$:最后一行
    • /pattern/:被此处模式所能够匹配到的每一行
  3. 地址范围:
  • #,#
  • #,+#
  • /pat1/,/pat2/
  • ,/pat1/

  1. ~:步进
  • 1~2 奇数行
  • 2~2 偶数行

编辑命令:

  • d 删除模式空间匹配的行,并立即启用下一轮循环
  • p 打印当前模式空间内容,追加到默认输出之后
  • a []text 在指定行后面追加文本,支持使用\n实现多行追加
  • i []text 在行前面插入文本
  • c []text 替换行为单行或多行文本
  • w /path/file 保存模式匹配的行至指定文件
  • r /path/file 读取指定文件的文本至模式空间中匹配到的行后
  • = 为模式空间中的行打印行号
  • ! 模式空间中匹配行取反处理

s/// 查找替换,支持使用其它分隔符,s@@@,s###

  • 替换标记:

    • g 行内全局替换
    • p 显示替换成功的行
    • w /PATH/FILE 将替换成功的行保存至文件中

sed示例

  • sed ‘2p’ /etc/passwd
  • sed -n ‘2p’ /etc/passwd
  • sed -n ‘1,4p’ /etc/passwd
  • sed -n ‘/root/p’ /etc/passwd
  • sed -n ‘2,/root/p’ /etc/passwd 从2行开始
  • sed -n ‘/^$/=’ file 显示空行行号
  • sed -n -e ‘/^$/p’ -e ‘/^$/=’ file
  • Sed‘/root/a\superman’ /etc/passwd行后
  • sed ‘/root/i\superman’ /etc/passwd 行前
  • sed ‘/root/c\superman’ /etc/passwd 代替行
  • sed ‘/^$/d’ file
  • sed ‘1,10d’ file
  • nl /etc/passwd | sed ‘2,5d’
  • nl /etc/passwd | sed ‘2a tea’
  • sed 's/test/mytest/g' example
  • sed –n ‘s/root/&superman/p’ /etc/passwd 单词后
  • sed –n ‘s/root/superman&/p’ /etc/passwd 单词前
  • sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
  • sed –i.bak ‘s/dog/cat/g’ pets

高级编辑命令

  • P: 打印模式空间开端至\n内容,并追加到默认输出之前
  • h: 把模式空间中的内容覆盖至保持空间中
  • H:把模式空间中的内容追加至保持空间中
  • g: 从保持空间取出数据覆盖至模式空间
  • G:从保持空间取出内容追加至模式空间
  • x: 把模式空间中的内容与保持空间中的内容进行互换
  • n: 读取匹配到的行的下一行覆盖至模式空间
  • N:读取匹配到的行的下一行追加至模式空间
  • d: 删除模式空间中的行
  • D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环

示例:

  • sed -n 'n;p' FILE
  • sed '1!G;h;$!d' FILE
  • sed‘N;D’FILE
  • sed '$!N;$!D' FILE
  • sed '$!d' FILE
  • sed ‘G’ FILE
  • sed ‘g’ FILE
  • sed ‘/^$/d;G’ FILE
  • sed 'n;d' FILE
  • sed -n '1!G;h;$p' FILE

补充

自动化的前提是标准化

自动挂载光盘:

#centos 6以下
/misc/cd
rpm -q autofs
yum install autofs
service autofs start
chkconfig autofs on
#cetnos 7以上
/misc/cd
rpm -q autofs
yum install autofs
systemctl enable --now autofs

利用autofs这个服务自动惊醒光盘的挂载

关闭防火墙:

#centos 6以下
service iptables stop
chkconfig iptables off
#centos 7以上
systemctl disabled --now firewalld.service

更改网卡名称为传统网卡名:

#centos 6不需要改
#centos 7以上
sed -i 's@quiet@quiet net.ifnames=0@' /etc/default/grub
grub2-mkconfig -o /etc/grub2.cfg
reboot #重启

关闭selinux:

#centos系列都是这样的,是通用的
sed -i 's@SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config
reboot

关闭selinux后重启系统,新建文件的详细信息,权限后面就不会有那个点了

添加硬盘后扫描硬盘:

for i in `ls /sys/class/scsi_host`;do echo '- - -' >/sys/class/scsi_host/$i/scan;done

8-1 文本三级剑客之sed的更多相关文章

  1. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  2. 文本处理三剑客之 Sed ——一般编辑命令

    sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...

  3. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  4. 文本处理三剑客之sed

    sed 1.简介 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(patternspace),接着用sed命令处理缓冲区中的内 ...

  5. awk、sed、grep三大shell文本处理工具之sed的应用

    sed 流编辑器 对文本中的行,逐行处理 非交互式的编辑器 是一个编辑器 1.工作流程 1)将文件的第一行读入到自己的缓存空间(模式空间--pattern space),删除掉换行符 2)匹配,看一下 ...

  6. 文本处理三剑客之 sed详解

    1.简介 sed是非交互式的编辑器,它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  7. 文本处理三剑客之 sed

    sed:文本流编辑器 主要是对文件的快速增删改查,查询功能中最常用的是过滤,取行 sed [选项] [sed内置命令字符] [输入文件] Options: -n:取消默认的sed输出,常与sed内置命 ...

  8. 文本处理三剑客之 Sed ——高级编辑命令

    本篇介绍sed的高级编辑命令 高级编辑命令 P:打印模式空间开端至\n内容,并追加到默认输出之前 n: 读取匹配到的行的下一行覆盖至模式空间 N:读取匹配到的行的下一行追加至模式空间 h: 把模式空间 ...

  9. 【OS_Linux】三大文本处理工具之sed命令

    1.sed命令的简介及用法 sed:即为流编辑器,“stream editor”的缩写.他先将源文件读取到临时缓存区(也叫模式空间)中,再对满足匹配条件的各行执行sed命令.sed命令只针对缓存区中的 ...

随机推荐

  1. 第一节:python读取excel文件

    写在前面: (1)Excel中数字格式int(1),读出的是float(1.0)类型,导致传参时造成不同,强制转换时,int(str(1.0))在2.7版本又会报错ValueError: invali ...

  2. Java8-Stream-No.06

    import java.io.IOException; import java.math.BigDecimal; import java.util.Arrays; import java.util.s ...

  3. 【Android-布局复用】 多个界面复用一个布局文件(一)

    1.layout_common.xml 复用的布局文件 <?xml version="1.0" encoding="utf-8"?> <!-- ...

  4. goproxy

    go env -w GOPROXY=https://goproxy.cn,directgo env -w GO111MODULE=ongo env -w GOBIN=$HOME/bin (可选)go ...

  5. [Python自学] day-18 (2) (MTV架构、Django框架、模板语言)

    一.实现一个简单的Web服务器 使用Python标准库提供的独立WSGI服务器来实现MVC架构. 首先,实现一个简单的Web服务器: from wsgiref.simple_server import ...

  6. TabSheet源码

    TabSheet.h #if !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_) #define AFX ...

  7. 019_linuxC++之_函数模板引入

    (一)首先我们来看非模板程序,函数只是输入不一样的变量就需要构件很多个不一样的函数,那么这样很麻烦,则引入函数模板 int& max(int& a, int& b) { ret ...

  8. 【转载】从头到尾彻底理解KMP

    转自:http://blog.csdn.net/v_july_v/article/details/7041827 从头到尾彻底理解KMP 作者:July 时间:最初写于2011年12月,2014年7月 ...

  9. jQuery系列(八):jQuery的位置信息

    1.宽度和高度 (1):获取宽度 .width() 描述:为匹配的元素集合中获取第一个元素的当前计算宽度值.这个方法不接受任何参数..css(width) 和 .width()之间的区别是后者返回一个 ...

  10. mac使用php-version切换PHP版本

    在开发过程中,有时候我们的程序对某个php版本有着极为重要的限制,特别是大型项目. 因此,我们就需要切换多个php版本来满足我们的需求. 我们使用php-version来达到这个目的. 首先我们先使用 ...