04.13 三剑客之老二sed命令详解

来源:互联网 发布:斗鱼刷屏软件 编辑:程序博客网 时间:2024/06/09 05:34

第一章 sed命令简介

1. sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

2. 定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。


第二章 参数详解&案例

调用sed命令有两种形式:
sed [options] ‘command’ file(s)
sed [options] -f scriptfile file(s)

参数 参数说明 -n 取消默认的sed软件的输出,常与sed命令的p连用。 -e 一行命令语句可以执行多条sed命令。 -f 选项后面可以接sed脚本的文件名。 -r 使用扩展正则表达式,默认情况sed只识别基础正则表达式。 -i 直接修改文件内容,而不是输出到终端。sed软件只是修改在内存中的数据,并不会影响磁盘上的文件。
【-n】[root@CentOS7 ~]# sed -n '1,2p' test.txt I am studying linuxawk sed grep【-e】[root@Never-downtime ~]# sed -e  '3,$d' -e 's#10#01#g' guo.txt 01 01 01 01 0101 01 01 01 01【-f】sed [options] -f scriptfile file(s)【-r】[root@CentOS7 ~]# head -1 test.txt|sed -r 's#(.*)#head \1#g'head I am studying linux【-i】sed -i '#linux#mysql#g' test.txt

第三章 sed命令详解&案例

sed-command 解释说明 a 追加,在指定行后添加一行或多行文本。 ***** c 取代指定的行 d 删除指定的行。 ***** D 删除模式空间的部分内容,直到遇到换行符\n结束操作,与多行模式相关. i 插入,在指定行前添加一行或多行文本。 ***** h 把模式空间的内容复制到保持空间。 H 把模式空间的内容追加到保持空间。 g 把保持空间的内容复制到模式空间。 G 把保持空间的内容追加到模式空间。 x 交换模式空间和保持空间的内容。 l 打印不可见的字符。 n 清空模式空间的内容并读入下一行。 N 不清空模式空间,并读取下一行数据并追加到模式空间。 p 打印模式空间的内容,通长p会与选项-n一起使用。 P 打印模式空间的内容,直到遇到换行符\n结束操作。 q 退出sed r 从指定文件读取数据。 s 取代,s#old#new#g 这里g是s命令的替代标志,注意和g命令区分。 w 另存,把模式空间的内容保存到文件中。 y 根据对应位置转换字符。 :label 执行该标签后面的命令。 t 如果前面的命令执行成功,那么就跳转到t指定的标签处,继续往下执行后续命令。否则,仍然继续正常的执行流程。
【a】[root@CentOS7 ~]# sed -i '2aI am xiao ming' test.txt[root@CentOS7 ~]# cat test.txt I am studying linuxawk sed grepI am xiao mingserver become skilled atgain knowledge be trainedlearning...【c】[root@CentOS7 ~]# sed -i '2c awk sed egrep' test.txt I am studying linuxawk sed egrep【d】[root@CentOS7 ~]# sed -i '2d' test.txt I am studying linuxI am xiao mingserver become skilled atgain knowledge be trainedlearning...【i】[root@CentOS7 ~]# sed -i '1i number one' test.txt number oneI am studying linux【l】[root@CentOS7 ~]# sed 'l' test.txt I am studying linuxI am studying linuxawk sed grepawk sed grepI am xiao mingI am xiao mingserver become skilled atserver become skilled atgain knowledge be trainedgain knowledge be trainedlearning...learning...【s】[root@Never-downtime ~]# sed -i 's#10#01#g' guo.txt 01 01 01 01 0101 01 01 01 01

第四章 特殊符号详解&案例

特殊符号 解释说明 ! 到指定行以外的所有行应用命令 = 打印当前行行号。 ~ 1~5 表示从1行开始,以步长5递增。 & 代表被替换的内容。 ; 实现一行命令语句可以执行多条sed命令。 {} 对单个地址或地址范围执行批量操作。 + 地址范围中用到的符号,做加法运算。
【!】[root@Never-downtime ~]# sed '2,4!d' guo.txt 020304【=】[root@CentOS7 ~]# sed  '=' test.txt 1I am studying linux2awk sed grep3I am xiao ming4server become skilled at5gain knowledge be trained6learning...【~】[root@Never-downtime ~]# sed  '2~2d' guo.txt 01030507091113【&】[root@CentOS7 ~]# sed -r 's#awk#print &#g' test.txt I am studying linuxprint awk sed grepI am xiao mingserver become skilled atgain knowledge be trainedlearning...【;】[root@CentOS7 ~]# sed -r 's#awk#print &#g' test.txt ;[root@Never-downtime ~]# sed  '2~2d' guo.txt 

第五章 地址范围详解&案例

地址范围 含义 10 对第10行操作 10,20 对10到20行操作,包括第10,20行 10,+20 对10到30行操作,包括10,30行 1~2 对1、3、5、7…..行操作。 10,$ 对10到最后一行操作,包括第10行 /oldboy/ 对匹配oldboy的行操作 /oldboy/,/alex/ 对匹配oldboy的行到匹配alex的行操作 /oldboy/,10 对匹配oldboy的行到第10行操作,注意:如果前10行没有匹配到oldboy,sed软件会显示10行以后的匹配的行 1,/alex 对第一行到匹配alex的行操作。 /oldbooy/,+2 对匹配oldboy的行到其后的2行操作。
10】[root@CentOS7 ~]# sed '10d' test.txt I am studying linuxawk sed grepI am xiao mingserver become skilled atgain knowledge be trainedlearning...010203050610,20】[root@CentOS7 ~]#sed -n '10,20p' test.txt10,+20】[root@CentOS7 ~]#sed -n '10,+20p' test.txt1~2】sed '1~2d' test.txt【10,$】sed '10,$d' test.txt【/oldboy/】sed '/oldboy/d' test.txt【/oldboy/,/alex/】sed '/oldboy/,/alex/d' test.txt【/oldboy/,10】sed '/oldboy/,10d' test.txt【1,/alex】sed '1,/alex/d' test.txt【/oldbooy/,+2】sed '/oldboy/,+2d' test.txt

第六章 sed调试工具

sedsed软件是一个很棒的调试sed语句的工具,sedsed软件会详细的显示sed执行流程。
sedsed软件是用时下最流行的语言python写的,简单易用。

wget http//:sedsed.sourceforge.net/sedsed-1.0 -O /bin/sedsedchmod +x /bin/sedsed
原创粉丝点击