公众号:uncle39py

V1

2022/05/30阅读:25主题:默认主题

Linux sed

sed : 流式编辑器

sed:是读取一行文件内容,处理一下,读取一行文件内容,处理一下

一.对比:

sed 对比 vim

  • sed可以把处理文件的规则事先写好,然后用一套规则处理多个文件;而vim只能一个一个编辑(vim适用于临时编辑一下)

  • sed处理文件,一次只处理一行,即同一时间内存中只有一行文件的内容,无论文件多大,都不会对内存造成过大的压力,用于处理大文件;vim是一打开文件,全部读到内存中

二.使用

sed 选项 规则 a.txt

(一)规则

规则:定位+命令

''里面包含定位+命令

定位:(定位到哪一行),没有定位代表定位所有行

1.行号定位  sed '1p' a.txt    就第一行打印
sed '1,3d' a.txt            13行,代表一个范围
sed '1d;3d;5d;7d' a.txt      第1行,3行,5行,7

2.正则定位
/正则表达式/命令
sed '/^egon/d;5d' a.txt  以egon开头的行;第5
命令:
p:打印  
d:删除   
s:替换(s/查找的内容/替换的内容/gi)(最常用)
i:插入(前一行)   
a:插入(后一行)

sed 'p' a.txt # 屏幕上第一行print规则输出的,第二行是命令流到屏幕上的
sed 'd' a.txt # d代表删除,先处理规则(此处是删除),然后内存里这行内容还有的话就会输出到屏幕,没有的话就不会输出
              # 所以这条命令不输出任何东西
sed '定位s///' a.txt 
sed '1,9s/add/ADD/g' a.txt  # 1到9行替换(g:此行全部都替换,i代表忽略大小写)
sed '1i ncccc' a.txt 第一行前插入内容ncccc

(二)选项

-n 取消默认输出;
sed -n 'p' a.txt # 屏幕上输出的都是规则p打印出来的内容

-i 把处理规则真正的作用于文件中
   原先处理后的结果都丢到屏幕中,对原文件没有影响,该什么样还什么样
   -i后 现在不输出到屏幕上,而是输出到文件中(理解成改变输出地)
   
#不能上来就用-i,不然文件马上就变得面目全非,通常都是先调试文件输出到屏幕,发现是你要的结果后,在加上-i
#把本该流到屏幕中的内容(规则处理结果+如果内存有值的话输出到屏幕中)流到文件中

(三)sed天然支持管道符号

ifconfig | sed 's///' #可以处理其他命令的运行结果;此时无法-i,因为没有搭配文件.

分类:

后端

标签:

操作系统

作者介绍

公众号:uncle39py
V1