sed
说明
sed 是stream editor(字符流编辑器)的缩写,sed是操作,过滤和转换文本内容的强大工具,常用功能有对文件实现快速增删改查,其中查询功能中最常用的是过滤(过滤指定字符串)和取行(取出指定行)。
语法格式
sed 【选项】 【sed内置命令字符串】 【输入文件】
options【选项】 | 解释说明 |
---|---|
-n | 取消默认sed 的输出,常与sed内置命令的p连用输出想要内容 |
-i | 直接修改文件内容,而不是输出到终端,修改前备份 -i.bak |
-e | 允许多次编辑 |
-r | 支持扩展正则表达式 |
内置命令符
p 全拼print,表示打印匹配行内容,通常p会与选项-n 一起使用
d 删除行
= 显示行号
s 替换
g 全局
a 追加
i 当前行追加,原来行移至下一行
$ 表示最后一行
案例文本
I am dalei teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.baidu.com
my qq num is 584839659
not 4900000448.
my god ,i am not dalei, but DALEI!
-
取文本第二到四行:
sed -n '2,4p' dalei.txt
-
取文本第二行:
sed -n '2p' dalei.txt
-
过滤出包含有dalei字符串行:
grep dalei dalei.txt
sed -n '/dalei/p' dalei.txt
- 删除含有dalei字符串的行:
sed '/dalei/d' dalei.txt
- 删除2-4行:
sed '2,4d' dalei.txt
- 直接修改文件内容
sed -i.bak '/dalei/d' dalei.txt
- 替换文件中 dalei 为 xiaolei:`sed -n ‘s#dalei#xiaolei#p’ dalei.txt
- 在文本第二行追加666字符串:
sed '2a 6668' dalei.txt
- 在文本第二行追加999字符串:
sed '2i 88899' dalei.txt
- 在文本中插入两行:
sed '2i A\nB' dalei.txt
- sed 正则获取ip
ifconfig eth0 |sed -rn '2s#^.*net ##gp'|sed -rn 's# net.*$##gp'
- sed -e 多次编辑减少管道使用次数(使用的比较少)
ifconfig eth0 |sed -ne '2s#^.*net ##g' -ne 's# net.*$##gp'
- 用sed将/etc/passwd文件的第一行至最后一行重定向到 /dalei.txt:
sed -n '1,$'p /etc/passwd >dalei.txt
- 批量创建dalei01…dalei10个用户,并将用户前的数字作为该用户密码:
seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo \1|passwd --stdin oldboy\1#g'|bash