文本三级剑客之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. p4434 [COCI2017-2018#2] ​​Usmjeri

    思路 并查集的好题 考虑到求满足条件限制的方案数,显然观察样例可知结果就是2^x,x是互不影响的边的集合数量 然后考虑如何求互不影响的边的集合数量 可以使用并查集,用i和i+n表示这个点的父亲连向它的 ...

  2. 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署

    目前,较为成熟的技术是采用laravelS组件,注意和laravel 区别laravelS多了一个大写的S,由于laravelS默认监听5200端口,所以laravel项目要做一些调整 例如: 静态文 ...

  3. 操作mysql 中文乱码情况

    解决方法  : 在连接字符串中设置charset=utf8  即可正常添加中文字符 <add name="mtgzghEntities" connectionString=& ...

  4. [AngularJS] Decorator pattern for code reuse

    Imaging you have a large application, inside this large application you have many small individual a ...

  5. 题解 [51nod1461] 稳定桌

    题面 解析 一开始看上去毫无思路啊. 但想通了就很很简单. 我们枚举每种长度的边作为最大的边, 于是长度比当前大的边就要砍掉, 而长度比当前小的边只能留下小于等于当前长度的边数, 砍掉代价最小的几条就 ...

  6. Luogu P2516 [HAOI2010]最长公共子序列 DP

    首先$LIS$显然:$f[i][j]=max(f[i][j-1],f[i-1][j],(a[i]==b[j])*f[i-1][j-1])$ 考虑如何转移数量: 首先,不管$a[i]$是否等于$b[j] ...

  7. 001_C/C++笔试题_考察C/C++语言基础概念

    (一)文章来自:C/C++笔试题-主要考察C/C++语言基础概念.算法及编程,附参考答案 (二)基础概念 2. 头文件中的ifndef/define/endif的作用? 答:防止该头文件被重复引用. ...

  8. java什么时候进行垃圾回收,垃圾回收的执行流程

    java的垃圾回收分为 三个区域新生代 老年代 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间如果有 不进行垃圾回收 ,对象直接在伊甸园存储.如果伊甸园内存已满,会进行一次minor gc然后 ...

  9. css实现元素在div底部显示

    #CSS .1 {position:relative;} .2 {;} #HTML <div class="1"> <div class="2" ...

  10. Flutter移动电商实战 --(1)项目学习记录

    1.项目相关截图 2.项目知识点梳理图 Dio2.0: Dio是一个强大的 Dart Http 请求库,支持 Restful API.FormData.拦截器.请求取消等操作. Swiper: Swi ...