sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数说明: -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 -h或--help 显示帮助。 -n或--quiet或--silent 仅显示script处理后的结果。 -V或--version 显示版本信息。 动作说明: a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何东东; i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!
# 创建示例 [sujx@docker ~]$ cat text bird work good seak mark bird bird rest push deep bird bush desk jeep need year beat meet seat bird # 显示,不加-n参数,sed会输出两遍,因为sed本身会输出一遍 [sujx@docker ~]$ sed 'p' text bird work good seak bird work good seak mark bird bird rest mark bird bird rest push deep bird bush push deep bird bush desk jeep need year desk jeep need year beat meet seat bird beat meet seat bird [sujx@docker ~]$ sed -n 'p' text bird work good seak mark bird bird rest push deep bird bush desk jeep need year beat meet seat bird # 显示第二行 [sujx@docker ~]$ sed -n '2p' text mark bird bird rest # 显示第1、3、5行文本 [sujx@docker ~]$ sed -n "1p;3p;5p" text bird work good seak push deep bird bush beat meet seat bird # 从第二行开始,按偶数步长进行显示 [sujx@docker ~]$ sed -n '2~2p' text mark bird bird rest desk jeep need year # 从管道中欧给选择输出第五行 [sujx@docker ~]$ df -h |sed -n '5p' /dev/mapper/rl-root 35G 3.3G 32G 10% /
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# 替换,不加-i参数,不会保存修改结果。 # 生产环境中的最佳实践是先不使用-i 选项测试 sed 指令是否正确,确认无误后再使用-i 选项修改源文件,或者对源文件进行备份操作。 # 将含有work的一行的第一个bird替换为cat [sujx@docker ~]$ sed "/work/s/bird/cat/" text cat work good seak mark bird bird rest push deep bird bush desk jeep need year beat meet seat bird [sujx@docker ~]$ cat text bird work good seak # 将1到3行的bird全部替换为cat [sujx@docker ~]$ sed "1,3s/bird/cat/g" text cat work good seak mark cat cat rest push deep cat bush desk jeep need year beat meet seat bird
# 插入、修改和删除 # 在第三行上插入一行cat dog snake horse [sujx@docker ~]$ sed "3i\cat dog snake horse" text bird work good seak mark bird bird rest cat dog snake horse push deep bird bush desk jeep need year beat meet seat bird # 在第三行下插入一行cat dog snake horse [sujx@docker ~]$ sed "3a\cat dog snake horse" text bird work good seak mark bird bird rest push deep bird bush cat dog snake horse desk jeep need year beat meet seat bird # 把第三行替换为worm worm worm [sujx@docker ~]$ sed "3c\worm worm worm worm" text bird work good seak mark bird bird rest worm worm worm worm desk jeep need year beat meet seat bird