第一章 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 linux
awk sed grep
【-e】
[root
@Never-downtime ~]# sed -e
'3,$d' -e
's#10#01#g' guo.txt
01 01 01 01 01
01 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退出sedr从指定文件读取数据。s取代,s#old#new#g 这里g是s命令的替代标志,注意和g命令区分。w另存,把模式空间的内容保存到文件中。y根据对应位置转换字符。:label执行该标签后面的命令。t如果前面的命令执行成功,那么就跳转到t指定的标签处,继续往下执行后续命令。否则,仍然继续正常的执行流程。
【a】
[root
@CentOS7 ~]
[root
@CentOS7 ~]
I am studying linux
awk sed
grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
【c】
[root
@CentOS7 ~]
I am studying linux
awk sed egrep
【d】
[root
@CentOS7 ~]
I am studying linux
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
【i】
[root
@CentOS7 ~]
number one
I am studying linux
【l】
[root
@CentOS7 ~]
I am studying linux
I am studying linux
awk sed
grep
awk sed
grep
I am xiao ming
I am xiao ming
server become skilled at
server become skilled at
gain knowledge be trained
gain knowledge be trained
learning...
learning...
【
s】
[root
@Never-downtime ~]
01 01 01 01 01
01 01 01 01 01
第四章 特殊符号详解&案例
特殊符号解释说明
!到指定行以外的所有行应用命令=打印当前行行号。~1~5 表示从1行开始,以步长5递增。&代表被替换的内容。;实现一行命令语句可以执行多条sed命令。{}对单个地址或地址范围执行批量操作。+地址范围中用到的符号,做加法运算。
【!】
[root
@Never-downtime ~]
02
03
04
【=】
[root
@CentOS7 ~]
1
I am studying linux
2
awk sed
grep
3
I am xiao ming
4
server become skilled at
5
gain knowledge be trained
6
learning...
【~】
[root
@Never-downtime ~]
01
03
05
07
09
11
13
【&】
[root
@CentOS7 ~]
I am studying linux
print awk sed
grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
【;】
[root
@CentOS7 ~]
第五章 地址范围详解&案例
地址范围含义
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 ~]
I am studying linux
awk sed grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
01
02
03
05
06
【
10,
20】
[root
@CentOS7 ~]
【
10,+
20】
[root
@CentOS7 ~]
【
1~
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/sedsed
chmod +
x /bin/sedsed