【Linux】sed命令
2016-05-31 16:21
288 查看
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
操作例子:
可以看到2-5行已经没有了,但是注意,原始的文件中2-5行还是在的,sed命令不会删除原始文件中的内容。
注:
nl命令表示将文件内容显示到标准输出,同时显示行号。
如果只删除第2行,则输入
如果删除第2行到最后一行,则输入
a:表示在后面添加内容
i:表示在前面添加内容
-n:表示quiet模式,仅显示2-5行
输入
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
操作例子:
1.将某文件内容的内容列出并打印行号,同时,将2-5行删除
输入nl /home/zk/test8/main.c |sed '2,5d'
可以看到2-5行已经没有了,但是注意,原始的文件中2-5行还是在的,sed命令不会删除原始文件中的内容。
注:
nl命令表示将文件内容显示到标准输出,同时显示行号。
如果只删除第2行,则输入
nl /home/zk/test8/main.c |sed '2,5d'
如果删除第2行到最后一行,则输入
nl /home/zk/test8/main.c |sed '2,$d'$表示最后一行
2.在某文件的某行后面加入内容
输入nl /home/zk/test8/main.c |sed '7a //copyfile function'
a:表示在后面添加内容
3.在某文件的某行前面加入内容
输入nl /home/zk/test8/main.c |sed '7i //copyfile function'
i:表示在前面添加内容
4.整行替换
输入nl /home/zk/test8/main.c |sed '2,5c NO 2-5'
5.显示某行
输入nl /home/zk/test8/main.c |sed -n '2,5p'
-n:表示quiet模式,仅显示2-5行
6.以行为单位进行部分数据替换
sed 's/要被替换的数据/新的字符串/g'
输入
/sbin/ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g'
相关文章推荐
- Linux安装的分区问题
- linux基础命令
- centos解决The path "" is not a valid path to the 3.2.0-4-amd64 kernel headers.问题
- linux动态库加载RPATH, RUNPATH
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
- Centos6.7+vsftpd+db4+db4-utils---被动模式
- Linux用户和用户组管理简析
- Linux驱动学习(3-设备节点-手动创建)
- 产生随机字母组成字符串
- linux动态库加载时搜索路径
- LinuxC/C++编程(8)—共享内存通信
- Linux系统Load average负载详细解释
- 如何在CentOS下安装g++
- Linux和Windows双系统下Windows系统插入耳机没有声音
- linux安装图形化界面
- centos安装软件命令
- 解析 Linux 中的 VFS 文件系统机制
- linux高级原3
- Linux日志文件总管——logrotate
- linux下安装jetty