shell--学习 sed
sed:数据流编辑器
读一行到内存处理一行然后输出一行。
模式空间:
sed:默认不编辑源文件
sed [option] ADDRESSCOMMAND file
1、起始行、 结束行
sed startline,endline file sed 2,5p file
2、模式匹配 /模式/
sed /^root/p file 匹配到会打印两次,因为每个本身都要打印
3、 /模式1/,/模式2/
sed /^l/,/^h/p file 以l开头的行到以h结尾的行,都指第一次匹配的
4、只给一个数值,行号,表示精确指定某行
sed 5p file
5、指定起始行,使用+N,表示从指定的行开始,向后的N行,共N+1行内容
sed 10,+5 file
sed命令:
p:显示符合条件的行
d:删除符合条件的行 sed /^' '/d file 删除空白开头的行
a: append 用法:a \string 在指定的行后追加新行,内容为string
# sed '/d$/a \hello world\nhello world' file 在以d结尾后面加两行内容
其实就把这些内容当成一个字符串追加进来,只是\n在文本里被当成换行符处理了
i:insert 用法:i \string 在指定的行的前面插入新行。内容为string \n
r:r filename 将指定的文件的内容添加至符合条件的行处 sed '/d$/r/root/t2' t
w:w filename 将指定范围内的内容另存为到指定的文件中(重复会覆盖) sed /d$/w /tmp/d.txt t
s:查找并替换。s/匹配模式/要替换的内容/;@ # $ % a
每行所有匹配到的内容都替换:
g:全局替换 sed s/d/D/g file sed/s/l..e/&r/g file &指匹配的整体
i:查找的时候忽略字符的大小写
sed的选项:
-n:静态模式,不显示模式空间中的内容,只显示匹配条件的行 sed -n 1p file
-r:使用扩展正则表达式 sed -r s/(l..e)(m+)/\1r\2xx/g file \1指括号里的整体(后向引用) 不用转义括号
-i:直接修改源文件
练习:
有一个文本文件:
username,age,gender,salary
zhangsan,20,F,2000
sed的后向引用:
&表示引用模式匹配的整个字符串
练习:
1、将history命令的结果行首的空白字符删掉[[:space:]]
history | sed s/^[[:space:]]//g
2、取出一个文件路径的父目录 比如/var/log/mysql/acces.log ===>/var/log/mysql/
echo"/var/log/mysql" | sed -r 's#^(/?.*/).+/?#\1#g'
3、删除文件中以空白字符+#开头的行中的空白字符及#
#asdsdasd
==>
asdasd
sed -r s/^[[:space:]]+#//g file
sed -r 's/^(l.*e$)/#\1/g' file 给l开头e结尾的加注释#
shell--学习 sed的更多相关文章
- Shell学习:sed命令
http://blog.sina.com.cn/s/blog_a56ef5490101cn58.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- shell学习指南-阅读笔记
shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...
- Shell学习之结合正则表达式与通配符的使用(五)
Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...
- shell 学习笔记2-shell-test
一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...
- Linux shell利用sed如何批量更改文件名详解[转载]
需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...
- Shell之sed用法 转滴
通过例子学习sed的用法 1,sed介绍 sed可删除(delete).改变(change).添加(append).插入(insert).合.交换文件中的资料行,或读入其它档的资料到 文> ...
- [shell基础]——sed命令
关于sed sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓 ...
- shell学习总结之自定义函数
shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
随机推荐
- 关于extjs中动态添加TabPanel的tab项并以iframe显示的整理
近来的项目中用到了Extjs 的TabPanel,这也是Extjs最基本,最常用的组件了 网上或者书上的例子里大都是把tab项渲染到一个div中, 这对于在每个Tab页里加载一个页面的情况就不适合了 ...
- Codeforces Round #336 (Div. 2) C. Chain Reaction set维护dp
C. Chain Reaction 题目连接: http://www.codeforces.com/contest/608/problem/C Description There are n beac ...
- ccConfig(设置一些底层接口状态:是否支持动作叠加 设置fps更新间隔和位置 是否画边框等。。)
#ifndef __CCCONFIG_H__ #define __CCCONFIG_H__ #include "platform/CCPlatformConfig.h" /** @ ...
- Xcode和IOS模拟器
Xcode和IOS模拟器 目录 概述 Xcode常用操作 学会用Instrument IOS模拟器 概述 Xcode常用操作 整体缩进或者缩退 command+“[” .command+“]” 在同一 ...
- MYSQL: Handler_read_%参数说明
环境: 表t_feed_idx(user_id bigint, feed_id bigint, KEY (`user_id`,`feed_id`)) engine=innodb;表t_feed_i ...
- NHibernate教程
NHibernate教程 一.NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦.浪费时间的.NHibernate是一个面向.Net环境的对象/关系数据库 ...
- 计划任务命令crontab、at
一.为计划任务提供支持 开始为系统建立计划任务之前,需要为系统添加相关设置,以确保计划任务能够正确运行.计划任务需要的支持主要包括两个方面:正确运行系统服务.准确的系统时间. 1.正确运行系统服务 为 ...
- opengl之vsh、fsh简易介绍+cocos2dx 3.0 shader 变灰
认识着色器 理解OpenGL渲染管线,对于学习OpenGL非常重要.下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段) 此图是从wiki中拿过来的,OpenGL的渲染管线主要包括: ...
- DOS命令如何进入指定的下一级目录?
如cd E:\java workspace\test\src 如何进入E盘 ,直接 E:
- 关于Android中TextView显示多个空格
一.直接填写文字,输入多少,显示多少,如下: android:text="AAA AAA" ————————>显示:AAA AAA 二.通过设置str ...