
sed命令介绍
sed
是stream editor
(流编辑器)的简写,sed 可依照脚本的指令来处理、编辑文本文件。Sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed命令语法
sed [选项] '动作' 文件名
| -n, |
| -e 脚本, |
| -f 脚本文件, |
| |
| -i[扩展名], |
| -l N, |
| |
| -r, |
| -s, |
| -u, |
| |
| |
| -a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ |
| -c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! |
| -d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚; |
| -i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); |
| -p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ |
| -s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法 |
使用示例
- 查看文件内容
| $ sed -n '5,8 p' passwd |
| sync:x:4:65534:sync:/bin:/bin/sync |
| games:x:5:60:games:/usr/games:/usr/sbin/nologin |
| man:x:6:12:man:/var/cache/man:/usr/sbin/nologin |
| lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin |
| $ sed -n '/^root/ p' passwd |
| root:x:0:0:root:/root:/bin/bash |
| $ sed -n '/root/I p' passwd |
| root:x:0:0:root:/root:/bin/bash |
| nm-openvpn:x:118:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin |
- 查找功能
查找passwd
文件中有/bin/bash
字符串的行
| $ sed -n '\%/bin/bash% p' passwd |
| root:x:0:0:root:/root:/bin/bash |
| muller:x:1000:1000:muller,,,:/home/muller:/bin/bash |
- 删除打印输出
| sed '2,5 d' passwd |head |
| root:x:0:0:root:/root:/bin/bash |
| sync:x:5:0:sync:/sbin:/bin/sync |
| shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown |
| halt:x:7:0:halt:/sbin:/sbin/halt |
| mail:x:8:12:mail:/var/spool/mail:/sbin/nologin |
| operator:x:11:0:operator:/root:/sbin/nologin |
| games:x:12:100:games:/usr/games:/sbin/nologin |
| ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin |
| nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin |
| dbus:x:81:81:System message bus:/:/sbin/nologin |
- 新增行
| $ sed -e 3a\salah players.txt | head |
| muller |
| messi |
| kane |
| salah |
| sane |
| durant |
| curry |
| wulei |
| wuxi |
| zhouqi |
| $ sed '1 i\football' players.txt |
| football |
| muller |
| messi |
| kane |
| sane |
| durant |
| curry |
| wulei |
| wuxi |
| zhouqi |
| wangzhelin |
- 替换功能
| $ sed '6 c\harden' players.txt |
| muller |
| messi |
| kane |
| sane |
| durant |
| harden |
| wulei |
| wuxi |
| zhouqi |
| wangzhelin |
总结
sed
命令的功能非常灵活,可以根据不同的需求组合和应用各种命令和选项。记住,在对文件进行编辑时要小心谨慎,特别是在使用 -i
选项直接修改文件内容时,务必备份文件以防意外。