linux中sed命令的使用
sed命令是linux或者shell编程中常用的筛选、替换命令,如果能熟练使用sed则对经常使用的人来说在工作上是非常有帮助的
下面把sed主要的用法列出来(有错误的地方大家可以指正):
p命令
只打印第三行,没有-n会在第三行后多打印第三行:
sed -n '3p' filename
只打印最后一行:
sed -n '$p' filename
只打印10到20行(包括10和20行,若后面数字小于前面数字,则只打印前面数字的行):
sed -n '10,20p' filename
打印包含My在行尾的行到包含You的行:
sed -n '/My$/,/You/p' filename
打印匹配行和接着的5行:
sed -n '/My/,+5p' datafile
打印匹配行和下面行号为5的行,直到结尾:
sed -n '/My/,~5p' datafile
打印5倍数的行:
sed -n '0~5p' file
sed '0~5!d' file
----------------------------------------------------------
P命令
打印模式空间中第一个换行符前的内容
其实就是打印单数行
---------------------------------------------------------
d命令
删除第五行并打印其他行:
sed '5d' filename
删除包含My的行到包含You的行,不打印:
sed -n '/My/,/You/d' filename
删除包含My的行到第八行,不打印其他行:
sed -n '/My/,8d' filename
---------------------------------------------------------
D命令
删除模式空间中第一个换行符前的内容
其实就是打印双数行
---------------------------------------------------------
s命令
一个字符串替换另一个
sed 's/^My/You/g' datafile
g表示行内全局替换,也可用数值代替
3g表示从第三个匹配到的开始全局替换
sed -n '1,20s#My$#You#gp' datafile
打印1到20行内以My结尾的替换为You的行
注:紧跟s的符号为分隔符,除了换行符反斜杠
sed 's/^My/You/g;s/are/Are/g' datafile
同时替换多个
sed '/ABC/!s/^My/You/g;s/are/Are/g' datafile
替换不包含ABC的行
---------------------------------------------------------
r命令
sed '/^My/r datafile1' datafile2
把datafile1中的所有内容插入到在datafile2中以My开头的行之后
---------------------------------------------------------
w命令
sed '/^My/w datafile1' datafile2
把在datafile2中以My开头的行写入到datafile1中
---------------------------------------------------------
a命令
在查找到的行后追加,有\,则直接跟文本
sed '/My/a\hi,world\nhow are you' datafile
同r命令,只不过是写入一段文字
---------------------------------------------------------
i命令
当前行的前面插入新的文本
sed '/My/i\hi,world\nhow are you' datafile
用法同a\,只是文本插入到前面
---------------------------------------------------------
c命令
将查到的文本修改成新文本
sed '/My/c\hi,world\nhow are you' datafile
用法同a\和i\
---------------------------------------------------------
N命令
将下一行输入追加到模式空间以\n分隔
sed '/My/{N;s/My/Your/;}' datafile
若最后一行为奇数行,则N后面命令也不执行
---------------------------------------------------------
n命令
将下一行输入读入到模式空间
---------------------------------------------------------
y命令
sed '1,5y/abcd/ABCD/' datafile
把abcd都换成大写,和s命令一样/可以换
用法同tr命令
---------------------------------------------------------
q命令
退出命令
sed '/My/{q;s/My/Your/;}' datafile
不会执行s/My/Your/
---------------------------------------------------------
h/H命令和g/G命令
h清除缓冲区内容,保存最近执行h模式内容
H把匹配到内容追加保存在缓冲区
g把缓冲区内容替换掉模式内容
G把缓冲区内容追加到模式空间行后
sed -e '/My/h' -e '$g' datafile
sed -e '/My/H' -e '$G' datafile
g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除
G: 将hold space中的内容append到pattern space\n后
h: 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
H: 将pattern space中的内容append到hold space\n后
x: 交换pattern space和hold space的内容
---------------------------------------------------------
x命令
交换保持空间和模式空间的内容
---------------------------------------------------------
l命令
显示特殊字符,不显示乱码
sed -n '1,$l' f1
---------------------------------------------------------
-f参数
sed -n -f script datafile
---------------------------------------------------------
-i参数
直接修改文件,不会打印,如:
sed -i G datafile
把datafile中每行后面加个空行(G)
sed -i 's/^My/You/g' datafile
在文本中直接替换
sed -i '/My/{x;p;x}' datafile
在有My行前面加一空白行
sed -i '$!N;/^\(.*\)\n\1$/!P;D' datafile
删除相邻的重复行,只保留第一行
---------------------------------------------------------
-i.bak
修改原始文件并创建原始文件副本
sed -i.bak 's/^My/You/g' datafile
修改datafile并创建一个datafile.bak的备份
---------------------------------------------------------
-e参数
sed命令中进行多重编辑
sed -n -e '/My$/' -e 's/My/You/gp' datafile
先打印以My结尾的行,再执行替换语句
---------------------------------------------------------
=命令
打印行号:
sed -n '=' f1
$= 计算文本行数
sed -n '$=' datafile1 datafile2...
---------------------------------------------------------
$!除了最后一行
4!除了第四行
sed '4! s/My/Your/g' datafile
除了第四行都执行替换
---------------------------------------------------------
b命令
标签,可以跳转到标签执行,如
sed '/^My/byyc;s/^/#/;b;:yyc;s/^My/Your/ datafile
如果是My开头则换成Your,否则行前加#
---------------------------------------------------------
sed正则表达式
\ 不转义,即元字符照常打印
^ 以字符串开头,如/^My/以My开头的行
$ 以字符串结尾,如/My$/以My结尾的行
. 匹配一字符,如/M..y/M和y间有俩字符
* 匹配0个或多个前面的字符
[] 匹配里面的单字符,如/[Mh]y/匹配My和hy
[^] 匹配不在里面的字符
如/[^Mh]y/匹配不是My和hy
\(..\) 保存已经匹配的字符,用\n来呼出
如1,20s/\(you\)self/\1r/用\1呼出you,
最多保存9个,从左边开始标记
& 保存查找串,如s/My/you&you/,&表示My
\< 词首定位符,和^类似,如/\<My/
\> 词尾定位符,和$类似,如/My\>/
x\{m\} 连续m个x,如/a\{5\}/查找连续5个a
x\{m,\} 至少m个x,如/a\{5,\}/至少5个a
x\{m,n\} 至少m个x,最多n个x
\w 匹配每个字母和数字
\w\+ 匹配每一个单词
\s 匹配每个空格
\x\+ x表示一个字符or一个单词,当匹配到一个或者多个时操作
linux中sed命令的使用的更多相关文章
- linux中sed命令(全面解析)
目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...
- linux中sed命令
sed sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. ...
- linux中sed命令批量修改
sed命令下批量替换文件内容 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...
- Linux中exec命令相关
Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...
- Linux中sed的用法实践
Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...
- Linux中Sed的用法
Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...
- linux中grep命令的使用
转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...
- 转 linux之sed命令详解
http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed 编辑裁剪文件命令 sed -i "s/\/db\/te ...
- linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号
linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...
随机推荐
- Python设计模式 - UML - 部署图(Deployment Diagram)
简介 部署图也称配置图,用来显示系统中硬件和软件的物理架构.从中可以了解到软件和硬件组件之间的物理拓扑.连接关系以及处理节点的分布情况. 部署图建模步骤 - 找出需要进行部署的各类节点,如网络硬件设备 ...
- Python练习-循环及切片-2018.11.27
#直接用while循环去除.ad l=['xuyutao.ad','wangjun.ad','liuchao.ad','liuyan1.ad'] n=0 L=[] while n < 4: A= ...
- ES6 Generator 异步编程解决方案&&&promise
Generator: 是比promise更高级的解决方案 next yield function 后加* 状态机 generator语法糖 长轮询 接口常查询 ================= ...
- 解决:AttributeError: module 'requests' has no attribute 'post'”
今天学习Requests库,当用pip install requests安装后,写了一段代码报错:AttributeError: module ‘requests‘ has no attribute ...
- IIS7发布asp.net mvc提示404.0
https://support.microsoft.com/zh-cn/help/980368/a-update-is-available-that-enables-certain-iis-7-0-o ...
- 记一次Django报错Reverse for 'indextwo' with no arguments not found. 1 pattern(s) tried: ['$index/$']
启动python manage.py runserver 打开127.0.0.1:8000,报错信息如下: Reverse for 'indextwo' with no arguments not f ...
- linux就该这么学,第十一天了
今天讲了,网卡绑,定,两块网卡同时工作,自动备源,理论上速度提升一倍,工作中可以用到的技术 还有sshd服务,端口22,远程连接使用,还可以设置root是否可以直接登录,主要配置文件在,/etc/ss ...
- android 可以在程序代码中设置样式:style
<style name="text_style"> <item name="android:textStyle">bold</it ...
- Installing TensorFlow on Ubuntu or Windows
Installing TensorFlow on Ubuntu 显卡驱动:http://developer2.download.nvidia.com/compute/cuda/8.0/secure/P ...
- LOJ-10106(有向图欧拉回路的判断)
题目链接:传送门 思路: (1)将每个单词视为有向路径,单词的起始字母是起始节点,末尾字母是终止节点,然后找由字母建立的有向图 是否是欧拉图或者半欧拉图. (2)先用并查集判断是否连通,再判断入度与出 ...