sed

用法:

sed [选项]… ‘script’ inputfile

其中script是脚本基于sed语法的脚本 inputfile文件内容

常用选项

-n :不输出模式空间内容到屏幕,即不自动打印

-e :多点编辑

-f : /PATH/SCRIPT_FILE:从指定文件中读取编辑脚本

-r :支持扩展正则表达式

-i .bak :备份文件并原处编辑

把原文件做一个带.bak的备份文件 然后就不怕对原文件修改出错了

script : 脚本包括两部分 1 地址 2 命令

‘地址命令’

地址定界

1不给地址 : 对全文处理

2单地址

#:指定的行, 第#行 $:最后一行

/pattern/: 被此处模式所匹配的行 模式就是关键字 词 等

默认sed使用基本正则 /基本正则/

3地址范围:

#,# 从第#行 到 第#行

#, +# 从第n行 到 第n+m行

/pat1/,/pat2/ 从匹配模式1的行 到 匹配模式2的行

#,/pat1/ 从第#行 到 匹配模式1 的行结束

4~ :步进

1~2 奇数行

2~2 偶数行

编辑命令

d:删除模式空间匹配的行,并立即启用下一轮循环

p :打印当前模式空间的内容,追加到默认输出之后

#sed ‘2p’ 文件 会打印两遍第二行 如果只想打印第二行可以

#sed -n ’2p‘ 文件

a [\]text :在指定行后面追加文本

支持使用\n实现多行追加

i [\]text : 在行前面插入文本

#sed ‘2,5i\ ===’ f1

c [\] texr: 替换行为单行或多行文本

w /path/somefile :保存模式匹配的行至指定文件

把符合条件的行存到文件里

r /path/somefile :读取指定文件的文本至模式空间中匹配到的行后

=:为模式空间中的行打印行号 只显示行号

!:模式空间中匹配 行取反处理

示例

sed ‘2p’ /etc/passwd 显示第二行 但是会默认全打印所以有两个第二行

sed -n ‘2p’ /etc/passwd 与上一条相反 只显示第二行

sed -n ‘1,4p’ /etc/passwd 只打印第一行到第四行

sed -n ‘/root/p’ /etc/passwd 打印包含root的行

sed -n ‘2,/root/p’ /etc/passwd 从2行开始 到含有root的行

sed -n ‘/^$/=’ file 显示空行行号

sed -n -e ‘/^$/p’ -e ‘/^$/=’ file 空行显示行号并把行也打印出来

sed ‘/root/a\superman’ /etc/passwd 行后 在包含root的行后 打印字符串superman

sed ‘/root/i\superman’ /etc/passwd 行前 行前

sed ‘/root/c\superman’ /etc/passwd 代替行

sed ‘/^$/d’ file 删除空行

sed ‘1,10d’ file 删除1到10行

nl /etc/passwd |sed ‘2,5d’ 删除第2行到第5行

nl /etc/passwd | sed ‘2a tea’ 在第2行后面追加单词 tea 或字符 tea

sed ‘s/test/mytest/g’ example 搜索 test 替代 mytest

sed -n ‘s/root/&superman/p’ /etc/passwd 单词后 搜索 root 替代rootsuperman &相当于 表示前面的root

sed -n ‘s/root/superman&/p’ /etc/passwd 单词前

sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets 多点替换

sed -i.bak ‘s/dog/cat/g’ pets 把文件改了

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/95889

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达登录  万达直属QQ  guoqibee.com  万达娱乐直属QQ  万达招商QQ  万达娱乐主管  万达注册  万达主管QQ  万达开户