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

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

# 用其他未在文件中使用的字符来代替它。

sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'

gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'

 

# 分别压缩每个.TXT文件,压缩后删除原来的文件并将压缩后的.ZIP文件

# 命名为与原来相同的名字(只是扩展名不同)。(DOS环境:“dir /b”

# 显示不带路径的文件名)。

echo @echo off >zipup.bat

dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat

 

 

使用SED:Sed接受一个或多个编辑命令,并且每读入一行后就依次应用这些命令。

当读入第一行输入后,sed对其应用所有的命令,然后将结果输出。接着再读入第二

行输入,对其应用所有的命令……并重复这个过程。上一个例子中sed由标准输入设

备(即命令解释器,通常是以管道输入的形式)获得输入。在命令行给出一个或多

个文件名作为参数时,这些文件取代标准输入设备成为sed的输入。sed的输出将被

送到标准输出(显示器)。因此:

 

cat filename | sed '10q'         # 使用管道输入

sed '10q' filename               # 同样效果,但不使用管道输入

sed '10q' filename > newfile     # 将输出转移(重定向)到磁盘上

 

要了解sed命令的使用说明,包括如何通过脚本文件(而非从命令行)来使用这些命

令,请参阅《sed & awk》第二版,作者Dale Dougherty和Arnold Robbins

(O'Reilly,1997;http://www.ora.com),《UNIX Text Processing》,作者

Dale Dougherty和Tim O'Reilly(Hayden Books,1987)或者是Mike Arst写的教

程——压缩包的名称是“U-SEDIT2.ZIP”(在许多站点上都找得到)。要发掘sed

的潜力,则必须对“正则表达式”有足够的理解。正则表达式的资料可以看

《Mastering Regular Expressions》作者Jeffrey Friedl(O'reilly 1997)。

Unix系统所提供的手册页(“man”)也会有所帮助(试一下这些命令

“man sed”、“man regexp”,或者看“man ed”中关于正则表达式的部分),但

手册提供的信息比较“抽象”——这也是它一直为人所诟病的。不过,它本来就不

是用来教初学者如何使用sed或正则表达式的教材,而只是为那些熟悉这些工具的人

提供的一些文本参考。

 

括号语法:前面的例子对sed命令基本上都使用单引号('...')而非双引号

("...")这是因为sed通常是在Unix平台上使用。单引号下,Unix的shell(命令

解释器)不会对美元符($)和后引号(`...`)进行解释和执行。而在双引号下

美元符会被展开为变量或参数的值,后引号中的命令被执行并以输出的结果代替

后引号中的内容。而在“csh”及其衍生的shell中使用感叹号(!)时需要在其前

面加上转义用的反斜杠(就像这样:\!)以保证上面所使用的例子能正常运行

(包括使用单引号的情况下)。DOS版本的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