首页 > 代码库 > 自学linux指令分析-sed
自学linux指令分析-sed
自学linux指令分析-sed
1·命令格式
sed [-nefri] /输入文本/‘command’ 文件
2·命令参数
-n 取消默认输出
-i 改变输出的内容
-e 进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑
-f 指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作
-r sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法
常用指令:
a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容
i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p∶ 打印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用
s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g
3、命令功能
(删除,修改,替换,添加)核心命令之一,(桃园三结义,老二)
4、命令范列
实列一:已知文件test.txt内容为:
Test
liyao
oldboy
请给出打印test.txt内容时,不包含oldboy字符串的命令
命令一:sed /oldboy/d test.txt
[root@ban tmp]# cat test.txt
test
liyao
oldboy
[root@ban tmp]# sed /oldboy/d test.txt
test
liyao
命令二: sed -n /oldboy/p test.txt 只显示oldboy
[root@ban tmp]# cat test.txt
test
liyao
oldboy
[root@ban tmp]# sed -n /oldboy/p test.txt
oldboy
[root@ban ~]# sed -n 20,30p ett.txt
20
。。。
30
把/目录下及其子目录下所有以扩展名ett.txt结尾的文件中包含oldboylinux的字符串全部替换为dboywindow
[root@ban ~]# echo oldboylinux >ett.txt
[root@ban ~]# cat ett.txt
- oldboylinux
[root@ban ~]# cp ett.txt /etc/
[root@ban ~]# cp ett.txt /opt/
[root@ban ~]# sed s#oldboylinux#oldboywindows#g ett.txt 此条只是改变了输出,但源文件还没有改
(S表示编辑替换
g表示全部替换)
- oldboywindows
[root@ban ~]# cat ett.txt
Oldboylinux
[root@ban ~]# sed -i s#oldboylinux#oldboywindows#g ett.txt (sed –i表示改变内容)
[root@ban ~]# cat ett.txt
- oldboywindows
[root@ban ~]# find / -type f -name "ett.txt" 查找原文件
/etc/ett.txt
/root/ett.txt
/opt/ett.txt
[root@ban ~]# find / -type f -name "ett.txt"|xargs sed -i s#oldboylinux#oldboywindows#g 答案
[root@ban ~]# cat /etc/ett.txt
- oldboywindows
[root@ban ~]# cat /opt/ett.txt
Oldboywindows
[root@ban ~]# find / -type f -name "ett.txt"|xargs cat通过管道| 逐行处理,接指令cat(查看内容)
- oldboywindows
- oldboywindows
- oldboywindows
[root@ban ~]# find / -type f -name "ett.txt"|xargs ls 通过管道| 逐行处理,接指令ls(查看列表)
/etc/ett.txt /opt/ett.txt /root/ett.txt
自学linux指令分析-sed