sed练习2
[root@node2 ~]# cp /etc/passwd /server/scprits/
[root@node2 ~]# cd /server/scprits/
[root@node2 scprits]# ls -l passwd
-rw-r--r--. root root 12月 : passwd
[root@node2 scprits]# sed -n '3a \
user.' passwd
user.
#第三行加入一行
[root@node2 scprits]# sed '/root/a \
> root1' passwd
root:x:::root:/root:/bin/bash
root1
#匹配模式root的行之后加一行root1
[root@node2 scprits]# sed -n '$a \
liujunjun' passwd
liujunjun
#最后一行加入一或多行。
[root@node2 scprits]# sed -n '3i \
liujunjun1' passwd
liujunjun1
#在第三行之前插入一行。
[root@node2 scprits]# sed -n '/root/i \
> ljj' passwd
ljj
ljj
#在匹配模式root之前插入一行或多行。
[root@node2 scprits]# sed -n '$i \
> backup' passwd
backup
#在最后一行之前插入一行。
更改文件中指定的行
[root@node2 scprits]# sed '1cadmin' passwd
admin
#修改文件的第一行内容为root。
[root@node2 scprits]# sed '/sbin/cbin' passwd
#修改匹配指定的行。
[root@node2 scprits]# sed '$cdebug' passwd
#修改文件最后一行。
删除文件中的行
[root@node2 scprits]# sed '4d' passwd #删除文件中的第4行
[root@node2 scprits]# sed '4~2d' passwd
#从文件中第4行开始删除,并且每隔2行删除一行。
[root@node2 scprits]# sed '2,5d' passwd
#删除文件中第2行到第5行
[root@node2 scprits]# sed '2,5!d' passwd
#删除文件中除第2行到第5行之外的行。
[root@node2 scprits]# sed '$d' passwd
#删除文件最后一行。
[root@node2 scprits]# sed -e '$d' passwd -e '/root/d' passwd
#删除匹配模式的行
[root@node2 scprits]# sed '/root/,$d' passwd
#从匹配模式的行删除到文件最后一行。
[root@node2 scprits]# sed '/root/,+1d' passwd
#删除文件中匹配模式指定模式的行及其后面的n行
[root@node2 scprits]# sed '/^$/d' passwd
#删除文件中的空行。
[root@node2 scprits]# sed '/root\|ftp/!d' passwd
#删除文件中不匹配指定模式的行。
[root@node2 scprits]# sed '1,4{/root/d}' passwd
#删除文件的指定范围内的行中匹配指定模式的行。
替换文件中的内容
[root@node2 scprits]# sed 's/root/admin/' passwd
#替换一行中第一个匹配模式的字符串
[root@node2 scprits]# sed 's/root/admin/g' passwd
替换文件中的匹配指定模式的所有字符串。
[root@node2 scprits]# sed 's/root/admin/2' passwd
#替换文件中第行第2个匹配模式的字符串。
[root@node2 scprits]# sed 's/root/admin/gpw /tmp/passwd' passwd
#将发生字符串替换的行写入指定的文件,并只打印替换的行。
[root@node2 scprits]# sed '/bin/s/\///g' passwd
#将文件passwd中匹配模式/bin/的行中的/之后的字符串清空(替换为空)
[root@node2 scprits]# sed 's/..$//g' passwd
#删除掉字符串的个数由s/..$//g 中的圆点的个数决定,就是删除掉每行最后的2个字符。
[root@node2 scprits]# sed 's/^..//g' passwd
[root@node2 scprits]# sed '1,10s/^/#/g' passwd
#-10行加#号
[root@node2 scprits]# sed 's/^#//g' passwd
#去#号
[root@node2 scprits]# sed 's/^#//;/^$/d' passwd
#删除文件中的注释及其空行。
[root@node2 scprits]# sed -i 's/^/1\./' passwd
[root@node2 scprits]# sed 's/^[0-9]\./(&)/' passwd
#给文件passwd每个行数字编码加一个小括号(),利用符号&.
打印文件中的行。
[root@node2 scprits]# sed -n '4p' passwd #打印文件中的第4行。
[root@node2 scprits]# sed -n '3~2p' passwd #打印文件中从第3行开始,并且每隔2行就打印一行
[root@node2 scprits]# sed -n '$p' passwd #打印最后一行。
[root@node2 scprits]# sed -n '2,5p' passwd #打印第2行至第5行。
[root@node2 scprits]# sed -n '2,$p' passwd #打印第2行到最后一行。
[root@node2 scprits]# sed -n '/root/p' passwd
#打印指定匹配的行。
[root@node2 scprits]# sed -n '/root/,3p' passwd
#打印文件中指定匹配的行的到第6行。
[root@node2 scprits]# sed -n '1,/ft/p' passwd
#打印文件中第1行到指定匹配模式行的内容。
[root@node2 scprits]# sed -n '/ftp/,$p' passwd
#打印文件中指定匹配模式行到最后一行
[root@node2 scprits]# sed -n '/ftp/,+2p' passwd
#打印文件中匹配指定模式的行及其后面2行。
[root@node2 scprits]# sed -n '/ftp/,/ntp/p' passwd
#打印文件中从匹配指定模式的行到匹配另一个指定模式的行的内容。
打印文件中的行号
[root@node2 scprits]# sed -n '$=' passwd #打印文件的总行数。
[root@node2 scprits]# sed -n '/root/{=;p}' passwd 1.1.root:x:::root:/root:/bin/bash 1.1.operator:x:::operator:/root:/sbin/nologin
#打印文件中包含root的行号及其内容。
从文件中读取向文件中写入。
[root@node2 scprits]# touch sj.txt
[root@localhost shell]# sed -n 'r ip.txt' sj.txt #在文件sj.txt最后一行读入文件ip.txt的内容。
[root@localhost shell]# sed -n '1w sj.txt' ip.txt #将文件sj.txt的第一行写入到文件ip.txt
[root@localhost shell]# sed -n -e '1w sj.txt' -e '$w sj.txt' ip.txt #将文件sj.txt的第一行到最后一行写入到文件ip.txt.
[root@localhost shell]# sed -n '/2.2.2.2/w sj.txt' ip.txt #将文件sj.txt中匹配模式/2.2.2.2/的行写入到ip.txt文件中。
[root@localhost shell]# sed -n '/2.2.2.2/,$w sj.txt' ip.txt #将文件sj.txt中匹配模式/2.2.2.2/的行到最后一行都写入到ip.txt文件中。
[root@localhost shell]# sed -n '/2.2.2.2/,4w sj.txt' ip.txt #其后的4行。
在sed中使用shell变量。
[root@node2 scprits]# cat > input.file << eof
> The name of terminal which you are using is _terminal-type_.
> eof
[root@node2 scprits]# sed "s/_terminal-type_/$TERM/" input.file
The name of terminal which you are using is vt100.
当sed指令使用的是shell变量时,它可能会是任意字符串,
sed练习2的更多相关文章
- sed的应用
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- 文本处理三剑客之sed命令
第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...
- 6-2 sed 命令
1. sed : stream editor,流编辑器 是处理纯ASICC纯文本,按行琢行操作的. 编辑器有两种,行编辑器和全屏编辑器 sed:默认不编辑原文件,仅对模式空间中的数据做处理,而后.处理 ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...
- sed awk grep三剑客常用
sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...
- linux shell 用sed命令在文本的行尾或行首添加字符
转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...
- Sed、Awk单行脚本快速参考
文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...
- sed awk 样例
sed [options] '[action]' filename options: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕. -e:允 ...
- linux sed命令详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- sed命令详解
搜索 纠正错误 添加实例 sed 功能强大的流式文本编辑器 补充说明 sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时 ...
随机推荐
- monkey和monkeyrunner的区别
简单来说: 1.monkey是在设备或模拟器直接运行adb shell命令生成随机事件来进行测试 2.monkeyrunner是通过API发送特定的命令和事件来控制设备 为了支持黑盒自动化测试的场景, ...
- leetcode 分类
https://www.douban.com/note/330562764/ https://blog.csdn.net/Irving_zhang/article/details/78835035 h ...
- CME Futures & Options Order Book
http://algo-logic.com/futures-options-orderbook Algo-Logic Systems’ Futures & Options (F&O) ...
- A1039 Course List for Student (25 分)
一.技术总结 这里由于复杂度的限制,只能够使用vector,然后进行字符串转化:考虑到string.cin.cout会超时,可以使⽤用hash(262626*10+10)将学⽣生姓名变为int型,然后 ...
- Linux上error while loading shared libraries问题解决方法
在Linux环境执行程序时经常会遇到提示程序依赖动态库.so文件不存在的情况,出现报错"error while loading shared libraries: XXXX.so.XX: c ...
- 剑指offer:对称的二叉树(镜像,递归,非递归DFS栈+BFS队列)
1. 题目描述 /** 请实现一个函数,用来判断一颗二叉树是不是对称的. 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 */ 2. 递归 思路: /** 1.只要pRoot.left和 ...
- 快速认识springcloud微服务
这周浅显的学习了springcloud.简单聊一下微服务.所谓的微服务远远没有我想想的那么高端难以理解,简单说,就是多个服务分布在不同的服务器上,由这些服务互相配合完成某一项任务.那服务和服务之间调用 ...
- Appium swipe实现屏幕滑动
在 Appium 中提供 swipe() 方法来模拟用户滑动屏幕. swipe() 实现过程 是先通过在屏幕上标记两个坐标,然后再从开始坐标移动到结束坐标. 先看下 swipe 方法定义: def s ...
- mysql批量更新数据(性能优化) 第一种方式
首先想到的是,一条一条更新的速度太慢了,然后就想批量更新,一次更新N条数据.实践是检验真理的唯一标准,不一会儿,代码就敲完了,重新试了一下,效果依旧不理想.啊哦,真是要崩溃!后面又想到了利用异步,我一 ...
- 你必须知道的EF知识和经验(转)
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...