第一章 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 | 退出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 linux
awk sed grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
【c】
[root@CentOS7 ~]# sed -i '2c awk sed egrep' test.txt
I am studying linux
awk sed egrep
【d】
[root@CentOS7 ~]# sed -i '2d' test.txt
I am studying linux
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
【i】
[root@CentOS7 ~]# sed -i '1i number one' test.txt
number one
I am studying linux
【l】
[root@CentOS7 ~]# sed 'l' test.txt
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 ~]# sed -i 's#10#01#g' guo.txt
01 01 01 01 01
01 01 01 01 01
第四章 特殊符号详解&案例
特殊符号 | 解释说明 |
---|---|
! | 到指定行以外的所有行应用命令 |
= | 打印当前行行号。 |
~ | 1~5 表示从1行开始,以步长5递增。 |
& | 代表被替换的内容。 |
; | 实现一行命令语句可以执行多条sed命令。 |
{} | 对单个地址或地址范围执行批量操作。 |
+ | 地址范围中用到的符号,做加法运算。 |
【!】
[root@Never-downtime ~]# sed '2,4!d' guo.txt
02
03
04
【=】
[root@CentOS7 ~]# sed '=' test.txt
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 ~]# sed '2~2d' guo.txt
01
03
05
07
09
11
13
【&】
[root@CentOS7 ~]# sed -r 's#awk#print &#g' test.txt
I am studying linux
print awk sed grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
【;】
[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 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 ~]#sed -n '10,20p' test.txt
【10,+20】
[root@CentOS7 ~]#sed -n '10,+20p' test.txt
【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