码迷,mamicode.com
首页 > 其他好文 > 详细

sed 行编辑器

时间:2016-05-31 10:40:57      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:sed 行编辑器

sed:行编辑器,默认不处理源文件。

 -i 直接修改源文件

 

 -eSCRIPT–e SCRIPT 可以同时执行多个脚本

 

 -f/PATH/TO/SED_SCRIPT

  sed –f /path/to/scripts file

 

 -r:表示使用扩展正则表达式

  history |sed ‘s/[[:space:]]//‘  使用sed命令history的行空格删掉

 

1.sed ‘源地址+编辑命令’ 文件 

  地址:1,100

 $最后一行

 $-1 倒数第二行

 

2模式:/正则表达式

 /^root/

 

3/模式1//模式2/

 

4.指定行

 

5.Starline+N  starline开始向后的N

 

d:删除符合条件的行

sed ‘1,2d‘ /etc/fstab  删除第一行到第二行

sed ‘/oot/d‘ /etc/fstab 删除包含root的行

sed ‘1,+10d‘ /etc/fstab 删除第一行和后面10

 

P:显示符合条件的行。

sed ‘/\//p‘/ etc/fstab 显示带斜线的行。相同的会显示2     

-n:只显示符合条件的行

sed -n ‘/root/p‘ /etc/passwd

 

 

a \”string”:在指定的行后面追加新行,内容为“string

sed ‘/root/a \# hello world‘ /etc/passwd 在包含root的行后面添加 #helloworld

sed ‘/root/a \# hello world \n #hello‘ /etc/passwd   在后面添加2

 

i \string:在指定的行前面添加新行。内容为string

sed ‘/root/i\#hello \n #hello‘  /etc/passwd 在前面添加2

 

r FILE 将指定的文件内容添加至符合条件的行处

sed  ‘10r/etc/passwd‘ /etc/fstab  /etc/fstab的第10行添加passwd的内容

 

sed ‘$ r /etc/passwd‘ /etc/fstab 在最后一行$后插入passwd

 

sed ‘1,2r /etc/issue‘ /etc/fstab 在第一行和第二行后面插入issue的内容

 

w将指定范围内的内容另存至指定的文件中

sed ‘/oot/w /tmp/oot.txt‘ /etc/fstab fstab中包含oot的行另存至/tmp/oot.txt

 

查找并替换:s/要查找什么(支持正则表达式)/替换为指定的内容(不支持正则表达式)/

sed ‘s/oot/OOT/‘ /etc/fstab 查找fstab里的oot 替换成OOT

 

支持正则表达式:

sed ‘s/^\//#/‘ /etc/fstab 查找fstab中,以/开头的行。并把/替换成#

默认只替换每一行中第一次匹配到的字符

 

加修饰符 g:全局替换

sed ‘s/\//#/g‘ /etc/fstab

 

i:查找时忽略大小写

sed ‘s/OOT/ooo/i‘ /etc/fstab

 

S/ / /  :  S# # #  : S@ @ @

支持引用\(\) , \1  \2

  sed ‘s#l..e#&r#g’ sed.txt  sedl..e的单词引用替换成1..er

&:表示引用模式匹配到的的整个串    

或者sed  ‘s#\l..e\#\1r#g’sed.txt

1.删除/etc/grub.conf这个文件行首的空白字符

[root@localhost~]#sed  ‘s/^[[:space:]]//‘ /etc/grub.conf

 

2.替换/etc/inittab文件中的”id:3:initdefault:”一行中的数字5

[root@localhost~]#sed ‘s@\(id:\)[0-9]\(:initdefault:\)@\15\2@g‘ /etc/inittab

 

3.删除/etc/inittab文件中的空白行

[root@localhost~]#sed  ‘s/ ^$ /d‘ /etc/inittab

 

4.删除/etc/inittab文件中开头的#号,要求#后面必须有空白字符

[root@localhost~]#sed -r ‘s/^#[[:space:]]//‘ /etc/inittab

 

5.取出一个文件路径的目录名称

[root@localhost~]#echo "/etc/rc.d" |sed -r ‘s@^(/.*/)[^/]+/?@\1@g‘

 

6.写一个脚本传递三个,第一个为整数,第二个为运算符,第三个为整数,进行运算,精确2位小数

/bin/bash

#

echo “scale=2;$1$2$3”|bc

 

7.写一个脚本。传递三个参数来比较大小

/bin/bash

#

if [ $1 -gt $2];then

   if [ $3 -gt$1 ];then

      echo "$3"

    else

      echo "$1"

   fi

else

   if [ $3 -gt $2 ];then

      echo "$3"

     else

      echo "$2"

   fi

fi


sed 行编辑器

标签:sed 行编辑器

原文地址:http://coolcl.blog.51cto.com/4514424/1784703

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!