Unix流编辑器sed单行脚本快速参考(3)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:

 

# 在每一行中查找字串“foo”,并将找到的“foo”替换为“bar”

sed 's/foo/bar/'                 # 只替换每一行中的第一个“foo”字串

sed 's/foo/bar/4'                # 只替换每一行中的第四个“foo”字串

sed 's/foo/bar/g'                # 将每一行中的所有“foo”都换成“bar”

sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # 替换倒数第二个“foo”

sed 's/\(.*\)foo/\1bar/'            # 替换最后一个“foo”

 

# 只在行中出现字串“baz”的情况下将“foo”替换成“bar”

sed '/baz/s/foo/bar/g'

 

# 将“foo”替换成“bar”,并且只在行中未出现字串“baz”的情况下替换

sed '/baz/!s/foo/bar/g'

 

# 不管是“scarlet”“ruby”还是“puce”,一律换成“red”

sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'  #对多数的sed都有效

gsed 's/scarlet\|ruby\|puce/red/g'               # 只对GNU sed有效

 

# 倒置所有行,第一行成为最后一行,依次类推(模拟“tac”)。

# 由于某些原因,使用下面命令时HHsed v1.5会将文件中的空行删除

sed '1!G;h;$!d'               # 方法1

sed -n '1!G;h;$p'             # 方法2

 

# 将行中的字符逆序排列,第一个字成为最后一字,……(模拟“rev”)

sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

 

# 将每两行连接成一行(类似“paste”)

sed '$!N;s/\n/ /'

 

# 如果当前行以反斜杠“\”结束,则将下一行并到当前行末尾

# 并去掉原来行尾的反斜杠

sed -e :a -e '/\\$/N; s/\\\n//; ta'

 

# 如果当前行以等号开头,将当前行并到上一行末尾

# 并以单个空格代替原来行头的“=”

sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

 

# 为数字字串增加逗号分隔符号,将“1234567”改为“1,234,567”

gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'                     # GNU sed

sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # 其他sed

 

# 为带有小数点和负号的数值增加逗号分隔符(GNU sed)

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • nginx主主集群
  •  LVM逻辑卷管理器
  • 学习笔记:ACL详解
  • suse linux双网卡双网关配置
  • puppet文件服务配置
  •  Linux System and Performance Monitoring(Network篇)

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1