sed命令: 字符流编辑工具(行编辑工具)==按照每行中的字符进行处理操作
sed命令作用说明:
sed | [OPTION] | {script-only-if-no-other-script} | [input-file] |
---|---|---|---|
命令 | 参数 | 条件+处理= (指令) | 处理文件信息 |
#显示出文件中有oldboy行的信息 sed -n '/oldboy/p' oldboy.txt
参数 | 作用 |
---|---|
-n | 取消默认输出【不可与-i同用!】 |
-r | 识别扩展正则 |
-i | 真实编辑文件(将内存中的信息覆盖到磁盘中)【不可与-n同用!】 |
-e | 识别sed命令多个操作指令 |
参数 | 英文 | 作用 |
---|---|---|
p | 输出信息 | |
i | insert | 插入信息,在指定信息前面插入新的信息 |
a | append | 附加信息,在指定信息后面附加新的信息 |
d | delete | 删除指定信息 |
s | substitute | 替换信息 s###g(全局替换) |
c | 替换修改指定的一整行信息 |
#测试1: 显示单行信息 sed -n '3p' person.txt 103,Alex,COO #测试2: 根据行号信息,输出多行内容(连续) sed -n '1,3p' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO #测试3: 根据行号信息,输出多行内容(不连续) sed -n '1p;3p' person.txt 101,oldboy,CEO 103,Alex,COO
#根据内容信息,输出单行内容 sed -n '/oldboy/p' person.txt #根据内容信息,输出多行内容(连续) sed -n '/oldboy/,/Alex/p' person.txt #根据内容信息,输出多行内容(不连续) sed -n '/oldboy/p;/Alex/p' person.txt
#在文件第一行添加信息: sed '1i100,oldgirl,UFO' person.txt #在文件最后一行添加信息: sed '$a108,oldgirl,UFO' person.txt #在有oldboy行的前面添加oldgirl 后面添加olddog信息 sed -e '/oldboy/ioldgirl' -e '/oldboy/aolddog' person.txt #添加多行信息(\n为换行符) sed '$a100\n101' person.txt
#删除文件中第三行信息 sed '3d' person.txt #删除多行信息2到6行用,2和6行用; sed '2,6d' person.txt sed '2;6d' person.txt #删除有oldboy信息的行 sed '/oldboy/d' person.txt #如何利用sed命令取消空行显示 sed -n '/./p' person.txt sed '/^$/d' person.txt sed -n '/^$/!p' person.txt
sed ‘s#原有内容#修改后内容#g’ 文件信息
sed ‘s#()##g’ 文件信息 后项引用前项进行替换修改
#利用sed命令取出IP地址信息: #第一个历程: 取出有IP地址的行 ip a s eth0|sed -n '3p' #第二个历程: 取出IP地址 ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g' 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g' 10.0.0.200 #sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g' 进行整合 ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g' #sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g' 进行整合 sed -n '3 p' sed -r 's#^.*net (.*)/24.*#\1#g' sed -rn '3s#^.*net (.*)/24.*#\1#gp' #最终取IP地址方法 ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'
-i后加入要添加的后缀,常用为.bak
sed -i.bak 's#oldboy#oldold#g' person.txt
ni和参数同时使用,会将文件内容进行清空