目录
sed
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed
命令中的a
命令
a
命令用于在指定行后添加文本。它的语法如下:
sed '行号 a 要添加的文本' 文件名
其中,行号
表示要在哪一行后添加文本,要添加的文本
是要添加的具体内容。
[root@localhost ~]# vim qwer
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed '1ahelloe world' qwer
aa223
helloe world
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed '1a\ helloe world' qwer
aa223
helloe world
bb2312
cc98924
dd23123
1123134
2314124
sed
命令中的i
命令
i
命令用于在指定行前插入文本。它的语法如下:
sed '行号 i 要插入的文本' 文件名
其中,行号
表示要在哪一行前插入文本,要插入的文本
是要插入的具体内容。
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed '2ipppwww' qwer
aa223
pppwww
bb2312
cc98924
dd23123
1123134
2314124
sed
命令中的c
命令
c
命令用于替换指定行的文本。它的语法如下:
sed '行号 c 要替换的文本' 文件名
其中,行号
表示要替换的行号,要替换的文本
是要替换的具体内容。
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed '2c123helloe world' qwer
aa223
123helloe world
cc98924
dd23123
1123134
2314124
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed '$c778899' qwer # $表示最后一行
aa223
bb2312
cc98924
dd23123
1123134
778899
sed
命令中的n
命令
n
命令用于打印指定行的文本。它的语法如下:
sed -n '行号 p' 文件名
其中,行号
表示要打印的行号。
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed -n '3p' qwer
cc98924
sed
命令中的d
命令
d
命令用于删除指定的行。它的语法如下:
sed '行号 d' 文件名
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
#删除第一行内容
[root@localhost ~]# sed '1d' qwer
bb2312
cc98924
dd23123
1123134
2314124
#删除2至4行的内容
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed '2,4d' qwer
aa223
1123134
2314124
sed
命令中的s
命令
s
命令用于替换文本中的字符串,它的语法如下:
sed s/模式/替换字符串/[标志]
其中,模式是要匹配的字符串模式,可以是正则表达式或简单的字符串。替换字符串是要替换匹配到的模式的字符串。标志是可选的,用于指定替换的行为。
以下是一些常用的标志:
g:全局替换,替换所有匹配到的模式,默认只替换第一个匹配到的模式。
i:忽略大小写,不区分大小写进行匹配。
n:只打印替换后的行,不打印原始行。
p:打印替换后的行和原始行。
#替换第一个匹配到的字符串
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed 's/223/44444/' qwer
aa44444
bb2312
cc98924
dd23123
1123134
2314124
#全局替换所有匹配到的字符串
[root@localhost ~]# cat qwer
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed 's/2/A/g' qwer
aaAA3
bbA31A
cc989A4
ddA31A3
11A3134
A3141A4
#忽略大小写进行替换
[root@localhost ~]# cat qwer
hello world
AABBCC
aa223
bb2312
cc98924
dd23123
1123134
2314124
[root@localhost ~]# sed 's/AABBCC/aabbcc/i' qwer
hello world
aabbcc
aa223
bb2312
cc98924
dd23123
1123134
2314124
sed
命令中的N
命令
在sed
命令中,N
命令用于将下一行添加到模式空间中,并用换行符分隔。这可以用于在对多行文本进行处理时,将多行合并为单行。
N
命令没有参数,它只是简单地将下一行添加到模式空间中。当sed
命令处理输入时,它会逐行读取文本,并将每一行放入模式空间中进行处理。N
命令可以在模式空间中添加下一行,以便一次处理多行。
[root@localhost ~]# cat file.txt
aa 1
bb 2
cc 3
dd 4
#将每两行合并为一行
[root@localhost ~]# sed 'N;s/\n//' file.txt
aa 1 bb 2
cc 3 dd 4