自学linux指令分析-sed
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自学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
[[email protected] tmp]# cat test.txt
test
liyao
oldboy
[[email protected] tmp]# sed /oldboy/d test.txt
test
liyao
命令二: sed -n /oldboy/p test.txt 只显示oldboy
[[email protected] tmp]# cat test.txt
test
liyao
oldboy
[[email protected] tmp]# sed -n /oldboy/p test.txt
oldboy
[[email protected] ~]# sed -n 20,30p ett.txt
20
。。。
30
把/目录下及其子目录下所有以扩展名ett.txt结尾的文件中包含oldboylinux的字符串全部替换为dboywindow
[[email protected] ~]# echo oldboylinux >ett.txt
[[email protected] ~]# cat ett.txt
- oldboylinux
[[email protected] ~]# cp ett.txt /etc/
[[email protected] ~]# cp ett.txt /opt/
[[email protected] ~]# sed s#oldboylinux#oldboywindows#g ett.txt 此条只是改变了输出,但源文件还没有改
(S表示编辑替换
g表示全部替换)
- oldboywindows
[[email protected] ~]# cat ett.txt
Oldboylinux
[[email protected] ~]# sed -i s#oldboylinux#oldboywindows#g ett.txt (sed –i表示改变内容)
[[email protected] ~]# cat ett.txt
- oldboywindows
[[email protected] ~]# find / -type f -name "ett.txt" 查找原文件
/etc/ett.txt
/root/ett.txt
/opt/ett.txt
[[email protected] ~]# find / -type f -name "ett.txt"|xargs sed -i s#oldboylinux#oldboywindows#g 答案
[[email protected] ~]# cat /etc/ett.txt
- oldboywindows
[[email protected] ~]# cat /opt/ett.txt
Oldboywindows
[[email protected] ~]# find / -type f -name "ett.txt"|xargs cat通过管道| 逐行处理,接指令cat(查看内容)
- oldboywindows
- oldboywindows
- oldboywindows
[[email protected] ~]# find / -type f -name "ett.txt"|xargs ls 通过管道| 逐行处理,接指令ls(查看列表)
/etc/ett.txt /opt/ett.txt /root/ett.txt
以上是关于自学linux指令分析-sed的主要内容,如果未能解决你的问题,请参考以下文章