文本三级剑客之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. 通过LVM备份mysql数据库脚本

    #!/bin/bash #******************************************************************** #encoding -*-utf8- ...

  2. PHP配置文件(php.ini)详解

    [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...

  3. Load store and memoryless

    metal https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/MTLBestPractice ...

  4. FlexPaper的深入了解和应用

    作者:tabb_ 零下疯度 推荐:无痕客 最近做项目需要用到flexpaper,所以想借此机会好好的研究一下. 这是官方的下载地址:http://flexpaper.devaldi.com/downl ...

  5. Git 命令行解决冲突

    git add filename   将本地工作区文件加入缓存区 git commit filename -m '提交文件注释' git status  查看当前工作区状态 git fetch ori ...

  6. 题解 [CF720A] Closing ceremony

    题面 解析 首先贪心地想一想, 一个人我们肯定让她坐得尽量远, 那到底坐到哪里呢? 考虑先让下面的人先坐, 那他们就要尽量把离上面入口远的位置坐掉, 因此把位置按离上面的距离从大到小排序, 再一个个看 ...

  7. 本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用<image/>标签

    在微信小程序开发中,当在CSS中使用背景图片格式为png时就会出现: 只要把png格式改掉就可以或者在<image/>标签里面写,我实测用JPG格式和把图片转成base64是没问题的.

  8. CSS测试题Ⅱ

    1.如何使用 CSS3 强制换行? A. word-wrap: break-word; B. text-wrap: break-word; C. text-wrap: force; D. text-w ...

  9. IF语句及代码练习

    接着上篇的内容  ㈠ if . . . else . . .语句 ⑴语法 if(条件表达式){              语句. . . } else {             语句. . . } ...

  10. js中Ajax工作原理(转)

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...