sed
sed 是一种几乎包括在所有 UNIX 平台(包括 Linux)的轻量级流编辑器。sed 有许多很好的特性。首先,它相当小巧,通常要比您所喜爱的脚本语言小很多倍。其次,因为 sed 是一种 流编辑器,所以,它可以对从如管道这样的标准输入接收的数据进行编辑。因此,无需将要编辑的数据存储在磁盘上的文件中。因为可以轻易将数据管道输出到 sed,所以,将 sed 用作强大的 shell 脚本中长而复杂的管道很容易。
sed的基本命令格式: sed 参数 'sed 命令' input-files
sed的基本参数:
-n 关闭原始内容输出
-p 是复制(同时也会显示原始行,若不想显示原始行,可加参数n)
-r 使用扩展正则表达式
-h 复制进模式缓冲区,以一行为单位(以后的总会将之前的一行覆盖)类似黑熊掰棒子
-H 复制到缓存区,与h不同的是,不覆盖之前的行。
-i 保存修改至原文件
'$G' 将暂存区的数据取出,放到文件的最后一行
'$g' 是使用暂存区的数据,替换掉文件的最后一行。
-e 是多步操作时用到的一个参数。当执行多个sed命令的时候会用到,
比如:
我想复制passwd的1,5行内容到文件末尾。这里我们需要执行二步操作
1. 复制1,5行;
2. 将暂存区的内容放到passwd1末尾
这样可能显得比较烦索些,如果我们用-e事情就会变得很简单:
sed -e '1,5H' -e '$G' passwd1
这就是-e的作用。
-d 删除
下面的一些参数,主要用于正则表达式中
a ---- 在选定行的下面,插入字符串;
i----- 在选定行的上面,插入字符串;
r ---- 将指定文件,读取到选定行的后面;
w---- 将选定行(或者叫匹配正则表达式的行)重定向到一个新文件;
c---- 将匹配的行替换成要修改的内容
sed -e '/^#/d' /etc/services | more
sed -n '/ssh/w newfile' passwd1
sed '/pcap/i /verygood' passwd1
sed -e '/juan/a verygood' passwd1
补充::::
其中还有一个很重要参数:s----替换
其格式: 's/1/2/' 将每行第一次出现的1全部替换成2.(若想将行中的1全部替换成2,需要加一个参数g) 's/1/2/g'
阅读(799) | 评论(0) | 转发(0) |