linux之sed命令详解
来源:互联网 发布:mac dps文件怎么打开 编辑:程序博客网 时间:2024/06/05 14:31
sed命令详解:
sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。
使用语法:
sed命令的使用规则是这样的:
set [option] 'command' input_file
其中option是可选的,常用的option有如下几种:
- -n 使用安静(silent)模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来;
- -e 直接在指令列模式上进行 sed 的动作编辑;
- -f 直接将 sed 的动作写在一个文件内,
-f filename
则可以执行filename内的sed命令; - -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式);
-i 直接修改读取的文件内容,而不是由屏幕输出。
常用的命令有以下几种:
a \: append即追加字符串, a \的后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选择的行的后面都加上字符串s;
- c \: 取代/替换字符串,c \后面跟上字符串s(多行字符串可以用\n分隔),则会将当前选中的行替换成字符串s;
- d: delete即删除,该命令会将当前选中的行删除;
- i \: insert即插入字符串,i \后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选中的行的前面都插入字符串s;
- p: print即打印,该命令会打印当前选择的行到屏幕上;
- s: 替换,通常s命令的用法是这样的:
1,2s/old/new/g
,将old字符串替换成new字符
用法介绍:
比如我们打开time.c文件看下
#include <stdio.h>#include <sys/sysinfo.h>#include <time.h>#include <errno.h>static int print_system_boot_time(){ struct sysinfo info; time_t cur_time = 0; time_t boot_time = 0; struct tm *ptm = NULL; if (sysinfo(&info)) { printf("error\n"); return -1; } time(&cur_time); if (cur_time > info.uptime) { boot_time = cur_time - info.uptime; } else { boot_time = info.uptime - cur_time; } ptm = gmtime(&boot_time); printf("System boot time: %d-%-d-%d %d:%d:%d\n", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec); return 0;}int main(){ if (print_system_boot_time() != 0) { return -1; } return 0;}
1) 我们看替换文件里面的内容,把info 改成 info1,用如下命令
1、a命令用法
主要在一行的后面加上 我们需要的东西
比如我们要在第一行增加字符串 chenyu
sed '1 a\chenyu' time.c
1 a是第一行的意思, 比如是2到3行 可以用 2,3 $是末尾的是必然要 第二行到末尾一行可以用这个表示 2,$ 比如我们要在第二行到末尾一行增加 chenyu1,如下命令
sed '2,$ a\chenyu1' time.c
效果如下
2、i命令用法
主要在一行的前面加上 我们需要的东西和a命令的效果一样3、c命令用法
主要是替莫一行,比如
sed '$ c\chenyu3' time.c
4、d命令用法
删除第8行到末尾
sed '8,$d' time.c
sed '/^int.*time$/d' test.txt
表示删除从ha开发从day结束
5、p命令用法
p是屏幕打印和d的用法一样
6、s命令用法
主要是替换内容,比如在文本里面把int 全部替换成char
sed 's/int/char/g' time.cg是全部内容意思
0 0
- Linux之Sed命令详解
- Linux之Sed命令详解
- linux之sed命令详解
- linux之sed命令详解
- Linux命令之Sed详解
- Linux之sed命令详解
- linux/unix命令详解之sed
- linux之sed基础命令详解
- linux/unix命令详解之sed
- Linux三剑客之sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed 命令详解
- linux sed命令详解
- linux sed命令详解
- 堆排序
- 探究为何:在onCreate中通过View.post能获取宽高
- android网络判断
- git ssh传输的原理与实践
- 设计模式深入学习--Proxy 代理模式(结构型模式)
- linux之sed命令详解
- Quartz.NET Windows 服务示例
- 关于android studio debug签名
- STL set集合容器
- 洛谷 P1583 魔法照片
- CI集成支付宝即时到账支付接口
- coco参考文档网址
- HTML_水平线详解
- Java enum的用法详解