Linux 之 sed 命令

 

sed 是一个非交互式流编辑器

所谓非交互式,是指使用 sed 只能在命令行模式下输入命令来编辑文本,不能像 vim 一样进入到工具里面进行文本编辑。

而所谓流编辑器,是指 sed 每次只从文件或标准输入中读入一行,然后对该行进行指定的处理,处理完成之后,接着读入下一行,再进行同样的处理,整个文件像流水一样被逐行处理。

 

sed 不是在原文件或输入上直接进行处理的,而是先将读入的行放到缓冲区中,对缓冲区里的内容进行处理。

sed 运行过程中维护着两个缓冲区,一个是活动的 " 模式空间(pattern space)",另一个是起辅助作用的 " 保持空间(holding space)"。一般情况下,每当运行 sed,sed 首先把第一行装入模式空间,进行处理后输出到屏幕,然后将第二行装入模式空间并替换掉模式空间里原来的内容,然后进行处理,以此类推。

 

sed 是 linux 上一个重要的文本处理工具,经常被用于处理大型的文本文件。

 


 

语法:

      sed [options] 'command' file(s)
      sed [options] -f scriptfile file(s)

 

选项

-i:直接修改
-e:多点编辑
-n:静默模式,仅显示脚本处理后的结果;
-f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;

 

参数

sed 命令常搭配正则表达式来对选择到的行进行处理,和 awk 一样,正则表达式要放在两个斜线中,/正则表达式/,也可使用多行模式,'/正则1/,/正则2/action'

a\ 在当前行下方插入文本.
i\ 在当前行上方插入文本.
c\ 把选定的行改为新的文本.
d 删除选择的行.
s 替换指定字符,格式s///.
g 表示行内字符串全部替换.
h 复制模式空间中的内容到保持空间.
H 将模板空间中的内容追加至保持空间.
g 获取保持空间中的内容,并替换模式空间.
G 获取保持空间中的内容,并追加至模式空间后面.
x 模式空间和保持空间中的内容互换.
n 在模式空间中读取当前行的下一行,并只处理下一行,而忽略当前行.
N 在模式空间中读取当前行的下一行,将两行当作一行进行处理.
p 打印模式空间中的行.
P 打印模式空间中的第一行.
r file 从file中读行.
w file 将模式空间中的内容追加至file末尾.  
W file 将模式空间中的第一行追加至file末尾.  
! 取反.  
= 打印当前行号码.  
# 添加注释.  

 

栗子

 

1.合并偶数行到奇数行后面:

      sed 'N;s/\n//' file

2.打印偶数行

      sed -n 'n;p' file

3.打印奇数行

      sed -n 'N;P' file

4.在某些行末尾添加指定内容

      sed -i '/export PATH=$PATH/s/$/:\/usr\/local\/python3\/bin/' /etc/profile 

5.删除配置文件的注释行

      sed -i '/^[[:space:]]*#/d' nginx.conf

6.删除文件中的空白字符

      sed -i 's/[[:space:]]//g' syztoo.ini

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值