文本处理三剑客之 sed
sed:文本流编辑器
主要是对文件的快速增删改查,查询功能中最常用的是过滤,取行
sed [选项] [sed内置命令字符] [输入文件]

Options:
-n:取消默认的sed输出,常与sed内置命令p连用
sed -n '/要过滤的内容/或者行号p'
-e:直接在命令行界面进行sed动作编辑,多点编辑
-r:使用扩展的正则表达式
-i:直接修改读取的文件内容,而不是由屏幕输出。若是不加此参数,就只是修改内存中的数据,不影响磁盘中的数据
script:
地址定界:
1、不给地址,对全文进行处理
2、单地址,
#:指定的行
/pattern/:被此处模式所能够匹配到的每一行
地址范围:
#,#:从#到#之间的行,包括##
#,+#:从#行到#+#行
/pat1/,/pat2/:匹配第一次被模式一和第一次被模式二匹配的行之间的行,贪婪模式!!!
#,/par1/:第#行到第一次被part1匹配的行
编辑命令:
d:删除模式空间匹配的行
sed '3d' file.txt # 数字表示行号
sed '3,4d' file.txt # 3-4行删除
p:显示模式空间中的内容
sed -n '2p' file.txt # 匹配第二行内容,如果不加-n,会将匹配的内容输出到屏幕两次
sed -n '2p;4p' person.txt 2和4行
sed -n '/xiaolizi1/p;/xiaolizi2/p' person.txt
a[\]text:在指定行的后面追加文本,可使用\n实现多行追加
# 在第二行后追加内容
sed '2a 要追加的内容' file.txt
# 追加多行内容
sed '2a 要追加的内容\n要追加的内容' file.txt
sed '$a 106,xiaolizi1\n107,xiaolizi2' person.txt # 在最后一行追加两行内容 $表示结尾
i[\]text:在指定行的前面追加文本
c[\]text:替换行为单行或多行文本
w /path/somefile:保存模式空间匹配的行到指定文件
r /path/somefile:读取指定的文件的文本至模式空间匹配到的行的行后
=:为模式空间中的行打印行号
!: 对模式空间匹配的行取反处理
查找替换:
s///:支持使用其他分隔符:s@@@,s### ...
sed 's#替换前的内容#替换后的内容#g' file.txt # g表示整个文本内容,也就是全局替换,如果不添加,只会替换第一个匹配到的内容 # 关于反向引用
[root@oldgirl ~]# #echo 123456 ==》 <123456> # 转换成此类格式的 \1表示引用前面第一个括号内的内容
[root@oldgirl ~]# echo 123456|sed -r 's#(.*)#<\1>#g'
<123456>
[root@oldgirl ~]# #echo 123456 ==》<1><2><3><4><5><6>
[root@oldgirl ~]# echo 123456|sed -r 's#([1-6])#<\1>#g'
<1><2><3><4><5><6>
[root@oldgirl ~]# echo 123456|sed -r 's#(.)#<\1>#g'
<1><2><3><4><5><6>
[root@oldgirl ~]# echo 123456|sed -r 's#.#<&>#g'
<1><2><3><4><5><6>
[root@oldgirl ~]# echo 123456|sed -r 's#.*#<&>#g'
<123456>
# 举个栗子
# 需求将oldboy*.jpg图片变为avi扩展名文件
# 第一个里程:找出要替换的文件信息
[root@oldgirl ~]# ls oldboy*.jpg
oldboy01.jpg oldboy03.jpg oldboy05.jpg oldboy07.jpg oldboy09.jpg
oldboy02.jpg oldboy04.jpg oldboy06.jpg oldboy08.jpg oldboy10.jpg
[root@oldgirl ~]# ls oldboy*.jpg|sed 's#.*#&#g'
oldboy01.jpg
oldboy02.jpg
oldboy03.jpg
oldboy04.jpg
oldboy05.jpg
oldboy06.jpg
oldboy07.jpg
oldboy08.jpg
oldboy09.jpg
oldboy10.jpg
# 第二个里程:拼凑批量修改文件的命令
[root@oldgirl ~]# ls oldboy*.jpg|sed 's#.*.jpg#&#g'
oldboy01.jpg
oldboy02.jpg
oldboy03.jpg
oldboy04.jpg
oldboy05.jpg
oldboy06.jpg
oldboy07.jpg
oldboy08.jpg
oldboy09.jpg
oldboy10.jpg
[root@oldgirl ~]# ls oldboy*.jpg|sed -r 's#(.*)jpg#\1#g'
oldboy01.
oldboy02.
oldboy03.
oldboy04.
oldboy05.
oldboy06.
oldboy07.
oldboy08.
oldboy09.
oldboy10.
[root@oldgirl ~]# ls oldboy*.jpg|sed -r 's#(.*)jpg#mv \1jpg#g'
mv oldboy01.jpg
mv oldboy02.jpg
mv oldboy03.jpg
mv oldboy04.jpg
mv oldboy05.jpg
mv oldboy06.jpg
mv oldboy07.jpg
mv oldboy08.jpg
mv oldboy09.jpg
mv oldboy10.jpg
[root@oldgirl ~]# ls oldboy*.jpg|sed -r 's#(.*)jpg#mv \1jpg \1avi#g'
mv oldboy01.jpg oldboy01.avi
mv oldboy02.jpg oldboy02.avi
mv oldboy03.jpg oldboy03.avi
mv oldboy04.jpg oldboy04.avi
mv oldboy05.jpg oldboy05.avi
mv oldboy06.jpg oldboy06.avi
mv oldboy07.jpg oldboy07.avi
mv oldboy08.jpg oldboy08.avi
mv oldboy09.jpg oldboy09.avi
mv oldboy10.jpg oldboy10.avi
# 第三里程碑:将命令输出的信息,进行执行
[root@oldgirl ~]# ls oldboy*.jpg|sed -r 's#(.*)jpg#mv \1jpg \1avi#g'|bash
[root@oldgirl ~]# ls oldboy*.avi
oldboy01.avi oldboy03.avi oldboy05.avi oldboy07.avi oldboy09.avi
oldboy02.avi oldboy04.avi oldboy06.avi oldboy08.avi oldboy10.avi
# 以上只是一个需求,为了演示反向引用,如果批量重命名的话,使用rename即可
替换标记:
g:行内全局替换
p:显示替换成功的行
w file:将替换成功的行保存至文件中
+ g:[address[,address]]g 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除
+ G:[address[,address]]G 将hold space中的内容append到pattern space\n后
+ h:[address[,address]]h 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
+ H:[address[,address]]H 将pattern space中的内容append到hold space\n后
+ d:[address[,address]]d 删除pattern中的所有行,并读入下一新行到pattern中
+ D:[address[,address]]D 删除multiline pattern中的第一行,不读入下一行
PS:不论是使用G、g还是H、h,它们都是将hold space里面的内容“copy”到patt
h: 把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行覆盖至模式空间
N:读取匹配到的行的下一行追加至模式空间
d: 删除模式空间中的行
D:删除当前模式空间开端至\n的内容(不再传至标准输 出),放弃之后的命令,但是对剩余模式空间重新执行sed
文本处理三剑客之 sed的更多相关文章
- 文本处理三剑客之sed命令
第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...
- 文本处理三剑客之 Sed ——一般编辑命令
sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...
- Linux文本处理三剑客之sed
推荐新手阅读[酷壳]或[骏马金龙]开篇的教程作为入门.骏马兄后面的文章以及官方英文文档较难. [酷壳]:https://coolshell.cn/articles/9104.html [骏马金龙-博客 ...
- 文本处理三剑客之sed
sed 1.简介 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(patternspace),接着用sed命令处理缓冲区中的内 ...
- 文本处理三剑客之 sed详解
1.简介 sed是非交互式的编辑器,它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...
- 文本处理三剑客之 Sed ——高级编辑命令
本篇介绍sed的高级编辑命令 高级编辑命令 P:打印模式空间开端至\n内容,并追加到默认输出之前 n: 读取匹配到的行的下一行覆盖至模式空间 N:读取匹配到的行的下一行追加至模式空间 h: 把模式空间 ...
- 4.shell编程-文本处理三剑客之sed
4.1.sed的选项 sed,流编辑器.对标准输出或文件进行逐行处理. 语法格式 第一种:stdout | sed [option] "pattern command" 第二种:s ...
- Linux 文本处理三剑客之grep
文本处理都要使用正则表达式,正则表达式有: 基本正则表达式:grep或者egrep -G 扩展正则表达式:egreo或者grep -E Linux 文本处理三剑客: sed:stream editor ...
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
文本处理三剑客:1.grep 2.sed 3.awk 一.grep:(过滤) grep的使用,主要的参数有: -n :显示行号:-o :只显示匹配的内容-q :静默模式,没有任何输出,得用e ...
随机推荐
- display:table-cell实现水平垂直居中
如果查看css手册,会发现display有许多带table字样的可选属性,有table.inline-table.table-row-group.table-row.table-cell等10个之多, ...
- linux 用户管理修改用户信息、密码状态、删除用户、退出登陆、切换用户
修改用户信息usermoduseradd支持的选项usermod都支持passwd有两个选项-l(在密码串前面加了两个叹号),-u,usermod有两个选项:-L 临时锁定用户(Lock)(在密码串前 ...
- 数据可视化d3.v4.js
<html> <head> <meta charset="utf-8"> <title>做一个简单的条形图</title> ...
- Debian 版本历史
Production Releases Version Code name Release date End of life date 8.0 jessie April 25th 2015 7.0 ...
- 名词解释:Linux内存管理之RSS和VSZ
Linux内存管理中不管是top命令还是pmap命令,都会有RSS和VSZ这两个名词,这里解释一下: RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少 ...
- [C++] 用Xcode来写C++程序[6] Name visibility
用Xcode来写C++程序[6] Name visibility 此小结包括了命名空间的一些使用细节 命名空间 #include <iostream> using namespace st ...
- EditPlus 自动格式化js、html、css,以EditPlus 文本编辑器v3.41(1145)为例
工具/原料 edtools.rar 方法/步骤 下载工具包:edtools.rar ,解压后放到磁盘的一个目录,如D:/edTools 打开ED,打开“工具”-“配置用户工具”,在弹出 ...
- orcl数据库查询重复数据及删除重复数据方法
工作中,发现数据库表中有许多重复的数据,而这个时候老板需要统计表中有多少条数据时(不包含重复数据),只想说一句MMP,库中好几十万数据,肿么办,无奈只能自己在网上找语句,最终成功解救,下面是我一个实验 ...
- zhuangxiu
红宝石家居广场国际家居馆 党湾综合市场(青年文明路)
- Alpha 冲刺报告(8/10)
Alpha 冲刺报告(8/10) 队名:洛基小队 峻雄(组长) 已完成:关于角色属性的脚本编码 明日计划:提升脚本的完成度 剩余任务:角色的属性脚本 困难:缺乏编程经验,很难自己独立完成编写,只能根据 ...