关于sed:Linux-sed-命令详解

Linux sedStream EDitor,流式编辑器 非交互,基于模式匹配过虑及批改文件逐行解决,并将后果输入到屏幕可实例对文本的输入、删除、替换、复制、剪切、导入、导出等各种操作一、根本正则列表与扩大正则依据推出工夫的不同,分为根本正则和扩大正则,扩大正则在根本正则的根底上做了一些优化和新增了一些正则表白符号,因为一些命令没有及时更新,所以你可能会遇到有些命令只反对根本正则,不反对扩大正则,或者须要增加一些反对扩大正则的选项。对于正则与扩大正则区别的具体介绍能够看我另一篇shell 正则的介绍 根本正则列表 扩大正则列表 二、sed 文本处理工具的用法介绍:用法1:前置命令 | sed [选项]'条件指令'用法2:sed [选项]'条件指令' 文件....相干阐明如下: 条件能够是行号或者/正则/没有条件时,默认为所有条件指令能够是增、删、改、查等指令默认sed会将所有输入的内容都打印进去,能够应用-n屏蔽默认输入选项中能够应用-r选项,让sed反对扩大正则sed命令的罕用选项如下: -n 屏蔽默认输入,默认sed会输入读取文档的全部内容-r 让sed反对扩大正则 若与其它选项一起应用,应放作为首选项-i sed间接批改源文件,默认sed只是通过内存长期批改文件,源文件无影响-e 多点编辑 让一条sed能够执行多条指令sed命令罕用条件指令如下 d:删除指定的字符p:显示指定的行s:替换指定的字符i: 在指定的行之前插入文本a:在指定的行之后追加文本c:替换指定的行r:读取文件w:保留到文件三、意识sed工具的 n、r、i 选项指令\# sed [选项] '条件指令' 文件.. .. 下面的条件指令 咱们能够拆分为 # sed [选项] '范畴界定+操作指令' 文件.. .. 的格局这样更容易了解 sed -n '/bash$/ s/:.*//p' /etc/passwd // 选项 -n 范畴界定/bash$/ + 操作指令s/:.*//psed命令能够应用行号或正则做为条件匹配: 1)sed命令的 -n 选项执行p打印等过滤操作时,心愿看到的是符合条件的文本。但不应用任何选项时,默认会将原始文本一并输入,从而烦扰过滤成果。比方,尝试用sed输入/etc/hosts的第1行: [root@server ~]# sed '1p'/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6能够发现所有的行都被显示进去了(第1行反复2次)。—— 正确的用法应该增加 -n 选项,这样就能够只显示第1行了: ...

September 8, 2021 · 4 min · jiezi

关于sed:Linux三大编辑神器-sed-下集

sed 的反向援用簡單來説:先用()括號保護住,並在後兩個##之間反斜杠援用第幾個括號括住的内容\1\2\3\ 相當于分別援用第一個,第二個,第三個括號裏面的内容 例子1:將本人的名字,改用<>括住sed -r 允許应用正則表達式 例子2:查看本人網卡的ID 第一步: ip addr show [網卡名字]第二步: sed -n '3p' 取第三行第三步: sed -r 's#(^.t )(.)(/.*$)#\2#g'

September 4, 2021 · 1 min · jiezi

Linux生产环境上最常用的一套Sed技巧

sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。 随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。 那些说可以现场google用法的,大多习惯将文本拷贝到excel里,慢慢磨洋工,遇到大批量文件更是手忙脚乱。不是一家人不进一家门,本文不是为你写的。一个简单的入门如图,一个简单的sed命令包含三个主要部分:参数、范围、操作。要操作的文件,可以直接挂在命令行的最后。除了命令行,sed也可以通过-f参数指定一个sed脚本,这个属于高级用法,不做过多描述。 有些示例命令我会重复多次,聪明如你一定能发现其中规律,有时连解释都用不着。 参数-n 这个参数是--quiet或者--silent的意思。表明忽略执行过程的输出,只输出我们的结果即可。 我们常用的还有另外一个参数 :-i。 使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。范围1,4 表示找到文件中1,2,3,4行的内容。这个范围的指定很有灵性,请看以下示例(请自行替换图中的范围部分)。 5 选择第5行。2,5 选择2到5行,共4行。 1~2 选择奇数行。 2~2 选择偶数行。 2,+3 和2,5的效果是一样的,共4行。 2,$ 从第二行到文件结尾。 范围的选择还可以使用正则匹配。请看下面示例。 /sys/,+3 选择出现sys字样的行,以及后面的三行。/^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。 为了直观,下面的命令一一对应上面的介绍,范围和操作之间是可以有空格的。 sed -n '5p' filesed -n '2,5 p' filesed -n '1~2 p' filesed -n '2~2 p' filesed -n '2,+3p' filesed -n '2,$ p' filesed -n '/sys/,+3 p' filesed -n '/^sys/,/mem/p' file操作最常用的操作就是p,意思就是打印。比如,以下两个命令就是等同的: cat file sed -n 'p' file除了打印,还有以下操作,我们来说常用的。 p 对匹配内容进行打印。d 对匹配内容进行删除。这个时候就要去掉-n参数了,想想为什么。 w 将匹配内容写入到其他地方。 ...

May 22, 2019 · 2 min · jiezi

使用 sed 一键修改 python 的 pip/pypi 源

Python 默认的 pip 源是[global]index-url = https://pypi.python.org/simple/国内访问速度比较慢,可以通过修改 ~/.pip/pip.conf 配置来指定国内的 pip 源。我一般使用清华的 pip 源,速度很快。安装完 Python 之后可以很方便地使用 sed 一键修改 pip 源sed ’s/http.*/https://pypi.tuna.tsinghua.edu.cn/simple/’ ~/.pip/pip.conf

December 3, 2018 · 1 min · jiezi