加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (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

# 只显示“不”匹配正则表达式的行(模拟“grep -v”)

sed -n '/regexp/!p' # 方法1,与前面的命令相对应

sed '/regexp/d' # 方法2,类似的语法

# 查找“regexp”并将匹配行的上一行显示出来,但并不显示匹配行

sed -n '/regexp/{g;1!p;};h'

# 查找“regexp”并将匹配行的下一行显示出来,但并不显示匹配行

sed -n '/regexp/{n;p;}'

# 显示包含“regexp”的行及其前后行,并在第一行之前加上“regexp”所

# 在行的行号 (类似“grep -A1 -B1”)

sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h

# 显示包含“AAA”、“BBB”或“CCC”的行(任意次序)

sed '/AAA/!d; /BBB/!d; /CCC/!d' # 字串的次序不影响结果

# 显示包含“AAA”、“BBB”和“CCC”的行(固定次序)

sed '/AAA.*BBB.*CCC/!d'

# 显示包含“AAA”“BBB”或“CCC”的行 (模拟“egrep”)

sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d # 多数sed

gsed '/AAA|BBB|CCC/!d' # 对GNU sed有效

# 显示包含“AAA”的段落 (段落间以空行分隔),HHsed v1.5 必须在“x;”后加入“G;”,接下来的3个脚本都是这样

sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'

# 显示包含“AAA”“BBB”和“CCC”三个字串的段落 (任意次序)

sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'

# 显示包含“AAA”、“BBB”、“CCC”三者中任一字串的段落 (任意次序)

sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d

gsed '/./{H;$!d;};x;/AAA|BBB|CCC/b;d' # 只对GNU sed有效

# 显示包含65个或以上字符的行

sed -n '/^.{65}/p'

# 显示包含65个以下字符的行

sed -n '/^.{65}/!p' # 方法1,与上面的脚本相对应

sed '/^.{65}/d' # 方法2,更简便一点的方法

# 显示部分文本——从包含正则表达式的行开始到最后一行结束

sed -n '/regexp/,$p'

# 显示部分文本——指定行号范围(从第8至第12行,含8和12行)

sed -n '8,12p' # 方法1

sed '8,12!d' # 方法2

# 显示第52行

sed -n '52p' # 方法1

sed '52!d' # 方法2

sed '52q;d' # 方法3, 处理大文件时更有效率

# 从第3行开始,每7行显示一次

gsed -n '3~7p' # 只对GNU sed有效

sed -n '3,${p;n;n;n;n;n;n;}' # 其他sed

# 显示两个正则表达式之间的文本(包含)

sed -n '/Iowa/,/Montana/p' # 区分大小写方式

=============================================================

5、选择性地删除特定行

# 显示通篇文档,除了两个正则表达式之间的内容

sed '/Iowa/,/Montana/d'

# 删除文件中相邻的重复行(模拟“uniq”),只保留重复行中的第一行,其他行删除

sed '$!N; /^(。*)n1$/!P; D'

# 删除文件中的重复行,不管有无相邻。注意hold space所能支持的缓存大小,或者使用GNU sed。

sed -n 'G; s/n/&&/; /^([ -~]*n)。*n1/d; s/n//; h; P'

# 删除除重复行外的所有行(模拟“uniq -d”)

sed '$!N; s/^(。*)n1$/1/; t; D'

# 删除文件中开头的10行

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

(编辑:济南站长网)

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

推荐文章
    热点阅读