加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

如何在Unix下使用sed命令

发布时间:2016-08-04 00:04:57 所属栏目:Unix 来源:站长网
导读:sed用法:sed 'Command' filename(s) 只显示结果而不修改文件。 1、sed '2,5d' file 显示文件file,除去2-5行,但行数超过文件实际行数时不会报错。 sed '/10

sed '1,10d'

# 删除文件中的最后一行

sed '$d'

# 删除文件中的最后两行

sed 'N;$!P;$!D;$d'

# 删除文件中的最后10行

sed -e :a -e '$d;N;2,10ba' -e 'P;D' # 方法1

sed -n -e :a -e '1,10!{P;N;D;};N;ba' # 方法2

# 删除8的倍数行

gsed '0~8d' # 只对GNU sed有效

sed 'n;n;n;n;n;n;n;d;' # 其他sed

# 删除匹配式样的行

sed '/pattern/d' # 删除含pattern的行。当然pattern、可以换成任何有效的正则表达式

# 删除文件中的所有空行(与“grep '.' ”效果相同)

sed '/^$/d' # 方法1

sed '/./!d' # 方法2

# 只保留多个相邻空行的第一行。并且删除文件顶部和尾部的空行。(模拟“cat -s”)

sed '/./,/^$/!d' #方法1,删除文件顶部的空行,允许尾部保留一空行

sed '/^$/N;/n$/D' #方法2,允许顶部保留一空行,尾部不留空行

# 只保留多个相邻空行的前两行。

sed '/^$/N;/n$/N;//D'

# 删除文件顶部的所有空行

sed '/./,$!d'

# 删除文件尾部的所有空行

sed -e :a -e '/^n*$/{$d;N;ba' -e '}' # 对所有sed有效

sed -e :a -e '/^n*$/N;/n$/ba' # 同上,但只对 gsed 3.02.*有效

# 删除每个段落的最后一行

sed -n '/^$/{p;h;};/./{x;/./p;}'

6、特殊应用

# 移除手册页(man page)中的nroff标记。在Unix System V或bash shell下使 用'echo'命令时可能需要加上 -e 选项。

sed "s/.`echo b`//g" # 外层的双括号是必须的(Unix环境)

sed 's/.^H//g' # 在bash或tcsh中, 按 Ctrl-V 再按 Ctrl-H

sed 's/.x08//g' # sed 1.5,GNU sed,ssed所使用的十六进制的表示方法

# 提取新闻组或 e-mail 的邮件头

sed '/^$/q' # 删除第一行空行后的所有内容

# 提取新闻组或 e-mail 的正文部分

sed '1,/^$/d' # 删除第一行空行之前的所有内容

# 从邮件头提取“Subject”(标题栏字段),并移除开头的“Subject:”字样

sed '/^Subject: */!d; s///;q'

# 从邮件头获得回复地址

sed '/^Reply-To:/q; /^From:/h; /./d;g;q'

# 获取邮件地址。在上一个脚本所产生的那一行邮件头的基础上进一步的将非电邮地址的部分剃除。(见上一脚本)

sed 's/ *(。*)//; s/>.*//; s/.*[:<] *//'

# 在每一行开头加上一个尖括号和空格(引用信息)

sed 's/^/> /'

# 将每一行开头处的尖括号和空格删除(解除引用)

sed 's/^> //'

# 移除大部分的HTML标签(包括跨行标签)

查看本栏目更多精彩内容:http://www.bianceng.cn/OS/unix/

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读